Funkcje Hive: Wbudowane i UDF [Funkcje zdefiniowane przez użytkownika] Przykład
Funkcje są budowane w określonym celu, aby wykonywać operacje matematyczne, arytmetyczne, logiczne i relacyjne na operandach nazw kolumn tabeli.
Wbudowane funkcje
Są to funkcje, które są już dostępne w Hive. Najpierw musimy sprawdzić wymagania aplikacji, a następnie możemy wykorzystać te wbudowane funkcje w naszych aplikacjach. Funkcje te możemy wywołać bezpośrednio w naszej aplikacji.
Składnia i typy są opisane w następnej sekcji.
Rodzaje funkcji wbudowanych w gałęzi HIVE
- Funkcje kolekcji
- Funkcje daty
- Funkcje matematyczne
- Funkcje warunkowe
- Funkcje łańcuchowe
- Różne Funkcje
Funkcje kolekcji
Funkcje te są używane w kolekcjach. Kolekcje oznaczają grupowanie elementów i zwracanie pojedynczych elementów lub tablicy elementów w zależności od typu zwrotu wymienionego w nazwie funkcji.
Typ zwrotu | Nazwa funkcji | Opis |
---|---|---|
INT | rozmiar (mapa ) | Pobierze i poda numer komponentów w typie mapy |
INT | rozmiar (tablica ) | Pobierze i poda numer elementów w typie tablicy |
Szyk | Map_keys(Mapa ) | Pobierze i wyświetli tablicę zawierającą klucze mapy wejściowej. Tutaj tablica jest nieuporządkowana |
Szyk | Wartości_mapy(Mapa ) | Pobierze i wyświetli tablicę zawierającą wartości mapy wejściowej. Tutaj tablica jest nieuporządkowana |
Szyk | Sort_array(Tablica ) | sortuje tablicę wejściową w kolejności rosnącej tablicy i elementów i zwraca ją |
Funkcje daty
Służą one do manipulacji datami i konwersji typów dat z jednego typu na inny:
Nazwa funkcji | Typ zwrotu | Opis |
---|---|---|
Unix_znacznik czasu() | BigInt | Dostaniemy aktualne Unix znacznik czasu w sekundach |
To_date (znacznik czasu ciągu znaków) | ciąg | Pobierze i poda datę jako część ciągu znacznika czasu: |
rok (data ciągu) | INT | Pobierze i poda rok jako część daty lub ciągu znaków czasu |
kwartał (data/znacznik czasu/ciąg znaków) | INT | Pobierze i poda kwartał roku dla daty, znacznika czasu lub ciągu znaków z zakresu od 1 do 4 |
miesiąc (data ciągu) | INT | Da miesiącowi część daty lub ciąg znacznika czasu |
godzina (data ciągu) | INT | Pobierze i poda godzinę znacznika czasu |
minuta (data ciągu) | INT | Pobierze i poda minutę znacznika czasu |
Date_sub(string data początkowa, int dni) | ciąg | Pobierze i poda odejmowanie liczby dni do daty początkowej |
Bieżąca data | dane | Pobierze i poda aktualną datę na początku oceny zapytania |
LAST _day (data ciągu) | ciąg | Pobierze i poda ostatni dzień miesiąca, do którego należy dana data |
trunc (data ciągu, format ciągu) | ciąg | Pobierze i poda datę obciętą do jednostki określonej w formacie.
Obsługiwane formaty w tym: MIESIĄC/MIESIĄC/MM, ROK/RRRR/RR. |
Funkcje matematyczne
Funkcje te są używane w matematyce Operacje. Zamiast tworzyć UDF, mamy wbudowane funkcje matematyczne w Hive.
Nazwa funkcji | Typ zwrotu | Opis |
---|---|---|
okrągły (podwójny X) | PODWÓJNIE | Pobierze i zwróci zaokrągloną wartość BIGINT X |
zaokrąglenie(DOUBLE X, INT d) | PODWÓJNIE | Pobiera i zwraca X zaokrąglone do d miejsc po przecinku |
brązowy(PODWÓJNY X) | PODWÓJNIE | Pobierze i zwróci zaokrągloną wartość BIGINT X przy użyciu trybu zaokrąglania HALF_EVEN |
podłoga (podwójne X) | DUŻE | Pobierze i zwróci maksymalną wartość BIGINT, która jest równa lub mniejsza niż wartość X |
sufit(DOUBLE a), sufit(DOUBLE a) | DUŻE | Pobierze i zwróci minimalną wartość BIGINT, która jest równa lub większa niż wartość X |
rand(), rand(nasiono INT) | PODWÓJNIE | Pobierze i zwróci losową liczbę o równomiernym rozkładzie od 0 do 1 |
Funkcje warunkowe
Te funkcje służą do sprawdzania wartości warunkowych.
Nazwa funkcji | Typ zwrotu | Opis |
---|---|---|
if(Warunek testowy boolowski, wartość T prawda, wartość T fałsz lub null) | T | Pobierze i da wartość True kiedy Warunek testu jest prawdziwy, w przeciwnym wypadku zwraca wartość False lub Null. |
ISNULL(X) | Boolean | Pobierze i zwróci wartość true, jeśli X jest NULL, lub false, jeśli nie jest. |
NIENULL(X) | Boolean | Pobierze i zwróci wartość true, jeśli X nie jest NULL, lub false w przeciwnym wypadku. |
Funkcje łańcuchowe
Manipulacje ciągami znaków i operacje na ciągach znaków – funkcje te można wywołać.
Nazwa funkcji | Typ zwrotu | Opis |
---|---|---|
odwróć (ciąg X) | ciąg | Da to odwrócony ciąg znaków X |
rpad(str, int długość, string pad) | ciąg | Pobierze i poda str, który jest dopełniony po prawej stronie padem o długości (wartość całkowita) |
rtrim(ciąg X) | ciąg | Pobierze i zwróci ciąg znaków powstały w wyniku przycięcia spacji z końca (prawej strony) X Na przykład, rtrim('wyniki') daje w wyniku 'wyniki' |
spacja(INT n) | ciąg | Pobierze i wyświetli ciąg n spacji. |
split(STRING str., STRING pat) | szyk | Dzieli str wokół pat (pat jest wyrażeniem regularnym). |
Str_to_map(tekst[, ogranicznik1, ogranicznik2]) | mapa | Podzieli tekst na pary klucz-wartość za pomocą dwóch ograniczników. |
UDF (funkcje zdefiniowane przez użytkownika)
W Hive użytkownicy mogą definiować własne funkcje, aby spełnić określone wymagania klienta. Są one znane jako UDF w Hive. Zapisane funkcje zdefiniowane przez użytkownika Java dla konkretnych modułów.
Niektóre UDF-y są specjalnie zaprojektowane do ponownego wykorzystania kodu w ramach aplikacji. Programista będzie rozwijał te funkcje w Java i zintegruj te UDF z Hive.
Podczas wykonywania zapytania programista może bezpośrednio użyć kodu, a funkcje UDF zwrócą dane wyjściowe zgodnie z zadaniami zdefiniowanymi przez użytkownika. Zapewni wysoką wydajność pod względem kodowania i wykonywania.
Na przykład w przypadku tworzenia ciągów znaków nie mamy żadnej predefiniowanej funkcji w Hive. W tym celu możemy zapisać rdzeń UDF Java. Jeśli potrzebujemy funkcjonalności Stem, możemy bezpośrednio wywołać ten Stem UDF w Hive.
Funkcjonalność rdzenia oznacza tutaj wyprowadzanie słów z ich rdzeni. To tak, jakby algorytm stemplowania redukował słowa „życzenie”, „życzenie” i „życzenia” do rdzenia słowa „życzenie”. Do realizacji tego typu funkcjonalności możemy zapisać w formacie UDF Java i zintegrować go z Ul.
W zależności od przypadków użycia, UDF-y mogą być pisane. Będą akceptować i generować różną liczbę wartości wejściowych i wyjściowych.
Ogólny typ UDF akceptuje pojedynczą wartość wejściową i generuje jedną wartość wyjściową. Jeśli w zapytaniu użyto funkcji UDF, funkcja UDF zostanie wywołana raz dla każdego wiersza w zestawie danych wynikowych.
W inny sposób może przyjąć grupę wartości jako dane wejściowe i zwrócić również pojedynczą wartość wyjściową.