Sead programmeerimine: Apache Pig Script UDF-ga HDFS-režiimis



Sead programmeerimine: Apache Pig Script UDF-ga HDFS-režiimis. Siin on ajaveebipostitus Uache-ga Apache Pigi skripti käitamiseks HDFS-režiimis ...

Eelmistes blogipostitustes nägime, kuidas alustada Sead programmeerimine ja skriptimine . Oleme näinud samme, kuidas kirjutada a Seaskript HDFS-režiimis ja ilma UDFita. Selle seeria kolmandas osas vaatame üle sammud, millega Pig-skript kirjutada UDF HDFS-režiimis .

Oleme selgitanud, kuidas rakendust Pig UDF rakendada, luues sisseehitatud funktsioonid, et selgitada Pigi sisseehitatud funktsiooni funktsionaalsust. Parema selgituse saamiseks oleme võtnud kaks sisseehitatud funktsiooni. Oleme seda teinud seaskripti abil.





Siinkohal oleme võtnud ühe näite ja kasutanud nii UDF-i (kasutaja määratletud funktsioone), st suure algustähega stringi tegemist kui ka väärtuse võtmist ja selle võimsuse tõstmist.

Andmekogumit on kujutatud allpool, mida me selles näites kasutame:



table

Meie eesmärk on teha 1. veeru täht suurtähega ja tõsta 2. veeru võimsust 3. veeru väärtusega.

Alustame iga UDF-i Java-koodi kirjutamisest. Samuti peame kompileerimisvigade vältimiseks oma java projektis konfigureerima 4 JAR-i.
Kõigepealt loome Java-programmid, mõlemad on toodud allpool:



Ülemine.java

import java.io.IOException import org.apache.pig.EvalFunc import org.apache.pig.data.Tuple import org.apache.pig.impl.util.WrappedIOException @SuppressWarnings ('deprecation') public class Upper laiendab EvalFunc {public String exec (Tuple'i sisend) viskab IOExceptioni {if (input == null || input.size () == 0) return null proovige {String str = (String) input.get (0) str = str.toUpperCase () return str} saak (erand e) {loop WrappedIOException.wrap ('Püütud erand töötleb sisendrida', e)}}}

Võim.java

import java.io.IOException import org.apache.pig.EvalFunc import org.apache.pig.PigWarning import org.apache.pig.data.Tuple public class Pow extends EvalFunc {public Long exec (Tuple input) viskab IOException {try { int alus = (täisarv) input.get (0) int eksponent = (täisarv) input.get (1) pikk tulemus = 1 / * pole ilmselt kõige tõhusam meetod ... * / for (int i = 0 i tulemus) {// Me ajasime üle. Andke hoiatus, kuid ärge visake // erandit. warn ('Overflow!', PigWarning.TOO_LARGE_FOR_INT) // Nulli tagastamine näitab Pigile, et me ebaõnnestusime, kuid // soovime jätkamist. return null}} return result} saak (erand e) {// Erandi viskamine põhjustab ülesande nurjumise. visake uus IOException ('Midagi hullu juhtus!', e)}}}

Kompileerimisvigade eemaldamiseks peame seadistama 4 JARi meie java projektis.

kuidas luua java objektide massiivi


JARide allalaadimiseks klõpsake nuppu Laadi alla

[buttonleads form_title = ”Laadi kood alla” redirect_url = https: //edureka.wistia.com/medias/wtboe1hmkr/download? media_file_id = 76900193 course_id = 166 button_text = 'JARide allalaadimine']

Nüüd ekspordime JAR-failid mõlema Java-koodi jaoks. Kontrollige JAR-i loomiseks allolevaid samme.

Siin oleme ühe programmi jaoks näidanud, jätkake samamoodi ka järgmises programmis.

Pärast JAR-ide ja tekstifailide loomist oleme kõik andmed teisaldanud HDFS-i klastrisse, mida kujutavad järgmised pildid:

Meie andmekogumis on väljad eraldatud komaga (,).

Pärast faili teisaldamist oleme loonud .pig laiendiga skripti ja pannud kõik käsud sellesse skriptifaili.

Nüüd tippige terminali PIG, millele järgneb skriptifaili nimi, mis on näidatud järgmisel pildil:

Siin on see väljund sea skripti käitamiseks.

Kas teil on meile küsimus? Palun mainige neid kommentaaride jaotises ja me võtame teiega ühendust.

Seonduvad postitused:

UDF-i loomise sammud Apache Pigis

Sissejuhatus Apache tarusse