Edellisissä blogiviesteissä näimme kuinka aloittaa Possun ohjelmointi ja komentosarjat . Olemme nähneet vaiheet kirjoittaa a Sikakomentosarja HDFS-tilassa ja ilman UDF: ää. Tämän sarjan kolmannessa osassa tarkastelemme vaiheita, joilla Pig-komentosarja kirjoitetaan UDF HDFS-tilassa .
Olemme selittäneet, miten Pig UDF otetaan käyttöön luomalla sisäänrakennettuja toimintoja, jotka selittävät Pig sisäänrakennetun toiminnon toiminnallisuuden. Paremman selityksen saamiseksi olemme ottaneet kaksi sisäänrakennettua toimintoa. Olemme tehneet tämän sikakirjoituksen avulla.
Tässä olemme ottaneet yhden esimerkin ja olemme käyttäneet sekä UDF: ää (käyttäjän määrittelemiä toimintoja), eli merkkijonon tekemistä isoilla kirjaimilla ja arvon ottamista ja sen tehon nostamista.
Aineisto on kuvattu alla, jota aiomme käyttää tässä esimerkissä:
Tavoitteenamme on tehdä ensimmäisen sarakkeen kirjain isoilla kirjaimilla ja nostaa toisen sarakkeen tehoa kolmannen sarakkeen arvolla.
Aloitetaan jokaisen UDF: n java-koodin kirjoittamisesta. Lisäksi meidän on määritettävä 4 JARia Java-projektissamme kääntövirheiden välttämiseksi.
Ensinnäkin luomme Java-ohjelmia, molemmat ovat alla:
paras java ide Windowsille
Ylä.java
tuo java.io.IOException tuoda org.apache.pig.EvalFunc tuoda org.apache.pig.data.Tuple tuoda org.apache.pig.impl.util.WrappedIOException @SuppressWarnings ('deprecation') julkinen luokka Ylä laajentaa EvalFunc {public Merkkijono exec (Tuplen syöttö) heittää IOExceptionin {if (input == null || input.size () == 0) return null try {String str = (String) input.get (0) str = str.toUpperCase () return str} saalis (poikkeus e) {heitä WrappedIOException.wrap ('kiinniotettu poikkeus käsittelee syöttöriviä', e)}}}
Power.java
Tuo java.io.IOException Tuo org.apache.pig.EvalFunc Tuo org.apache.pig.PigWarning Tuo org.apache.pig.data.Tuple julkinen luokka Pow laajentaa EvalFunc {public Long exec (Tuple-syöttö) heittää IOException {yritä { int base = (Kokonaisluku) input.get (0) int eksponentti = (Integer) input.get (1) pitkä tulos = 1 / * Ei todennäköisesti tehokkain menetelmä ... * / for (int i = 0 i tulos) {// Olemme täynnä. Anna varoitus, mutta älä heitä // poikkeusta. warn ('Overflow!', PigWarning.TOO_LARGE_FOR_INT) // Nollan palauttaminen osoittaa Pigille, että epäonnistumme, mutta // haluamme jatkaa suoritusta. return null}} return result} catch (Exception e) {// Poikkeuksen heittäminen aiheuttaa tehtävän epäonnistumisen. heittää uusi IOException ('Jotain pahaa tapahtui!', e)}}}
Kokoonpanovirheiden poistamiseksi meidän on määritettävä 4 purkkia java-projektissamme.
Napsauta Lataa-painiketta ladataksesi JAR-tiedostot
[buttonleads form_title = ”Lataa koodi” redirect_url = https: //edureka.wistia.com/medias/wtboe1hmkr/download? media_file_id = 76900193 course_id = 166 button_text = 'Lataa JARit']
Viemme nyt JAR-tiedostot molemmille Java-koodeille. Tarkista JAR: n luominen alla olevista vaiheista.
Tässä olemme osoittaneet yhdelle ohjelmalle, jatka samalla tavalla myös seuraavassa ohjelmassa.
Kun olet luonut JAR-tiedostot ja tekstitiedostot, olemme siirtäneet kaikki tiedot HDFS-klusteriin, jonka seuraavat kuvat kuvaavat:
Tietojoukossa kentät erotetaan pilkulla (,).
miten dynaamisesti allokoidaan taulukko java
Tiedoston siirtämisen jälkeen olemme luoneet komentotiedoston .pig-laajennuksella ja asettaneet kaikki komennot kyseiseen komentotiedostoon.
Kirjoita nyt päätelaitteeseen PIG ja sen jälkeen komentotiedoston nimi, joka näkyy seuraavassa kuvassa:
Tässä tämä on tulos sika-komentosarjan suorittamiseen.
Onko sinulla kysymys meille? Mainitse ne kommenttiosassa ja palaamme sinuun.
Aiheeseen liittyvät julkaisut:
Vaiheet UDF: n luomiseksi Apache Pig -sovelluksessa
fibonacci-sekvenssi c ++: ssa