Hive Functions: Built-in & UDF [User Defined Functions] Esimerkki
Funktiot on rakennettu tiettyä tarkoitusta varten suorittamaan operaatioita, kuten matemaattisia, aritmeettisia, loogisia ja relaatioita taulukon sarakkeiden nimien operandeille.
Sisäänrakennetut toiminnot
Nämä ovat toimintoja, jotka ovat jo saatavilla Hivessa. Ensin meidän on tarkistettava sovelluksen vaatimukset, ja sitten voimme käyttää näitä sisäänrakennettuja toimintoja sovelluksissamme. Voimme kutsua näitä toimintoja suoraan sovelluksessamme.
Syntaksi ja tyypit mainitaan seuraavassa osiossa.
HIVE:n sisäänrakennettujen toimintojen tyypit
- Kokoelmatoiminnot
- Päivämäärätoiminnot
- Matemaattiset funktiot
- Ehdolliset toiminnot
- Merkkijonofunktiot
- Muut Toiminnot
Kokoelmatoiminnot
Näitä toimintoja käytetään kokoelmissa. Kokoelmat tarkoittavat elementtien ryhmittelyä ja palauttavien elementtien yksittäisiä tai joukkoja riippuu funktion nimessä mainitusta palautustyypistä.
| Palautustyyppi | Toiminnon nimi | Tuotetiedot |
|---|---|---|
| INT | koko (kartta ) | Se hakee ja antaa komponenttien numeron karttatyypissä |
| INT | koko (Array ) | Se hakee ja antaa elementtien numeron taulukon tyypissä |
| Array | Map_keys(Kartta ) | Se hakee ja antaa taulukon, joka sisältää syötekartan avaimet. Tässä matriisi on järjestämättömässä |
| Array | Map_values(Kartta ) | Se hakee ja antaa taulukon, joka sisältää syötekartan arvot. Tässä matriisi on järjestämättömässä |
| Array | Sort_array(Matriisi ) | lajittelee syötetaulukon taulukon ja elementtien nousevaan järjestykseen ja palauttaa sen |
Päivämäärätoiminnot
Näitä käytetään päivämäärän manipuloimiseen ja päivämäärätyyppien muuntamiseen tyypistä toiseen:
| Toiminnon nimi | Palautustyyppi | Tuotetiedot |
|---|---|---|
| Unix_Timestamp() | bigint | Tulemme ajankohtaiseksi unix aikaleima sekunneissa |
| To_date(merkkijonon aikaleima) | jono | Se hakee ja antaa päivämäärän osan aikaleimamerkkijonosta: |
| vuosi (merkkijonopäivämäärä) | INT | Se hakee ja antaa vuoden osan päivämäärästä tai aikaleimamerkkijonosta |
| vuosineljännes (päivämäärä/aikaleima/merkkijono) | INT | Se hakee ja antaa vuosineljänneksen päivämäärälle, aikaleimalle tai merkkijonolle välillä 1–4 |
| kuukausi (merkkijonopäivämäärä) | INT | Se antaa kuukauden osan päivämäärästä tai aikaleimamerkkijonosta |
| tunti (merkkijonopäivämäärä) | INT | Se hakee ja antaa aikaleiman tunnin |
| minuutti (merkkijono päivämäärä) | INT | Se hakee ja antaa aikaleiman minuutin |
| Date_sub(merkkijonon alkamispäivä, int päivää) | jono | Se hakee ja antaa vähennyksen päivien lukumäärästä aloituspäivään |
| Current_date | data | Se hakee ja antaa nykyisen päivämäärän kyselyn arvioinnin alussa |
| VIIMEINEN _päivä(merkkijonopäivämäärä) | jono | Se hakee ja antaa sen kuukauden viimeisen päivän, johon päivämäärä kuuluu |
| trunc(merkkijonon päivämäärä, merkkijonomuoto) | jono | Se hakee ja antaa päivämäärän lyhennettynä muodon määrittelemään yksikköön.
Tässä tuetut formaatit: KUUKAUSI/MON/KK, VUOSI/VVVV/VV. |
Matemaattiset funktiot
Näitä funktioita käytetään matemaattisissa toiminnoissa Operatoimenpiteitä. UDF-tiedostojen luomisen sijaan meillä on Hiveen sisäänrakennettuja matemaattisia funktioita.
| Toiminnon nimi | Palautustyyppi | Tuotetiedot |
|---|---|---|
| pyöreä (DOUBLE X) | KAKSINKERTAINEN | Se hakee ja palauttaa X:n pyöristetyn BIGINT-arvon |
| pyöreä (DOUBLE X, INT d) | KAKSINKERTAINEN | Se hakee ja palauttaa X:n pyöristettynä d desimaaliin |
| pyöreä (DOUBLE X) | KAKSINKERTAINEN | Se hakee ja palauttaa X:n pyöristetyn BIGINT-arvon käyttämällä HALF_EVEN pyöristystilaa |
| kerros (DOUBLE X) | BIGINT | Se hakee ja palauttaa suurimman BIGINT-arvon, joka on yhtä suuri tai pienempi kuin X-arvo |
| katto (DOUBLE a), katto (DOUBLE a) | BIGINT | Se hakee ja palauttaa pienimmän BIGINT-arvon, joka on yhtä suuri tai suurempi kuin X-arvo |
| rand(), rand(INT siemen) | KAKSINKERTAINEN | Se hakee ja palauttaa satunnaisluvun, joka jakautuu tasaisesti välillä 0-1 |
Ehdolliset toiminnot
Näitä toimintoja käytetään ehdollisten arvojen tarkistuksiin.
| Toiminnon nimi | Palautustyyppi | Tuotetiedot |
|---|---|---|
| if(Boolen testiehto, T-arvoTrue, T-arvoFalseOrNull) | T | Se hakee ja antaa arvoa True when Testiolosuhteet ovat totta, antaa arvon False or Noll muuten. |
| ISNULL(X) | boolean | Se hakee ja antaa tosi, jos X on NULL ja false muuten. |
| ISNOTNULL(X) | boolean | Se hakee ja antaa tosi, jos X ei ole NULL ja false muuten. |
Merkkijonofunktiot
Merkkijonokäsittelyt ja merkkijonooperaatiot näitä toimintoja voidaan kutsua.
| Toiminnon nimi | Palautustyyppi | Tuotetiedot |
|---|---|---|
| käänteinen (merkkijono X) | jono | Se antaa X:n käänteisen merkkijonon |
| rpad (merkkijono str, int pituus, merkkijono tyyny) | jono | Se hakee ja antaa str, joka on oikealla pehmustettu tyynyllä pituudeltaan (kokonaisluku) |
| rtrim(merkkijono X) | jono | Se hakee ja palauttaa merkkijonon, joka on saatu leikattua välilyöntejä X:n lopusta (oikealta puolelta). Esimerkiksi, rtrim(' tulokset ') johtaa tulokseen |
| välilyönti (INT n) | jono | Se hakee ja antaa n välilyönnin merkkijonon. |
| split(STRING str, STRING pat) | ryhmä | Jakaa str:n pat ympärille (pat on säännöllinen lauseke). |
| Str_to_map(teksti[, erotin1, erotin2]) | kartta | Se jakaa tekstin avain-arvo-pareihin käyttämällä kahta erotinta. |
UDF:t (käyttäjän määrittämät funktiot)
Hivessä käyttäjät voivat määritellä omia toimintoja vastaamaan tiettyjä asiakkaan vaatimuksia. Nämä tunnetaan Hiven UDF:inä. Käyttäjän määrittämät toiminnot on kirjoitettu sisään Java tietyille moduuleille.
Jotkut UDF:t on suunniteltu erityisesti koodin uudelleenkäytettäviksi sovelluskehyksissä. Kehittäjä kehittää näitä toimintoja Java ja integroida nuo UDF:t Hiveen.
Kyselyn suorittamisen aikana kehittäjä voi käyttää koodia suoraan, ja UDF:t palauttavat ulostulot käyttäjän määrittämien tehtävien mukaisesti. Se tarjoaa korkean suorituskyvyn koodauksen ja suorituksen suhteen.
Esimerkiksi merkkijonovarmuutta varten meillä ei ole mitään ennalta määritettyä funktiota Hivessä. Tätä varten voimme kirjoittaa varren UDF sisään Java. Aina kun tarvitsemme Stem-toimintoja, voimme kutsua tätä Stem UDF:ksi suoraan Hivessa.
Tässä varren toiminnallisuus tarkoittaa sanojen johtamista juurisanoista. Se on ikään kuin varsinainen algoritmi pelkistäisi sanat "toivoa", "toivoi" ja "toivoa" juurisanaksi "toive". Tämän tyyppisten toimintojen suorittamiseksi voimme kirjoittaa UDF:n sisään Java ja integroi se Hive.
Käyttötapauksista riippuen UDF:t voidaan kirjoittaa. Se hyväksyy ja tuottaa eri määrän tulo- ja lähtöarvoja.
Yleinen UDF-tyyppi hyväksyy yhden syöttöarvon ja tuottaa yhden lähtöarvon. Jos kyselyssä käytetään UDF:ää, UDF kutsutaan kerran jokaiselle tulostietojoukon riville.
Toisella tavalla se voi hyväksyä ryhmän arvoja syötteenä ja palauttaa myös yhden lähtöarvon.
