Griseprogrammering: Apache Pig Script med UDF i HDFS-tilstand

Griseprogrammering: Apache Pig Script med UDF i HDFS-tilstand. Her er et blogindlæg til at køre Apache Pig-script med UDF i HDFS-tilstand ...

I de foregående blogindlæg så vi, hvordan man startede med Gris programmering og scripting . Vi har set trinene til at skrive en Griseskript i HDFS-tilstand og uden UDF. I den tredje del af denne serie gennemgår vi trinene til at skrive et griseskript med UDF in HDFS Mode .



Vi har forklaret, hvordan man implementerer Pig UDF ved at oprette indbyggede funktioner for at forklare funktionaliteten af ​​Pig-indbyggede funktion. For bedre forklaring har vi taget to indbyggede funktioner. Vi har gjort dette ved hjælp af et griseskript.



Her har vi taget et eksempel, og vi har brugt både UDF (brugerdefinerede funktioner) dvs. at lave en streng i store bogstaver og tage en værdi og hæve dens styrke.

Datasættet er vist nedenfor, som vi skal bruge i dette eksempel:



table

Vores mål er at fremstille 1. søjlebogstav med store bogstaver og hæve styrken i 2. søjle med værdien af ​​3. søjle.

Lad os starte med at skrive javakoden for hver UDF. Vi er også nødt til at konfigurere 4 JAR'er i vores java-projekt for at undgå kompileringsfejl.
Først opretter vi java-programmer, begge er angivet nedenfor:



Øvre.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') offentlig klasse Øvre udvider EvalFunc {public String exec (Tuple input) kaster IOException {if (input == null || input.størrelse () == 0) returner null prøv {String str = (String) input.get (0) str = str.toUpperCase () return str} catch (Undtagelse e) {throw WrappedIOException.wrap ('Fanget undtagelsesbehandling inputrække', e)}}

Power.java

import java.io.IOException import org.apache.pig.EvalFunc import org.apache.pig.PigWarning import org.apache.pig.data.Tuple offentlig klasse Pow udvider EvalFunc {public Long exec (Tuple input) kaster IOException {prøv { int base = (Heltal) input.get (0) int eksponent = (Heltal) input.get (1) langt resultat = 1 / * Sandsynligvis ikke den mest effektive metode ... * / for (int i = 0 i resultat) {// Vi overløb. Giv en advarsel, men kast ikke en // undtagelse. advar ('Overflow!', PigWarning.TOO_LARGE_FOR_INT) // Returnering af null vil angive for Pig, at vi mislykkedes, men // vi vil fortsætte med at udføre. return null}} return result} catch (Undtagelse e) {// At kaste en undtagelse får opgaven til at mislykkes. smid ny IOException ('Der skete noget dårligt!', e)}}}

For at fjerne kompileringsfejl skal vi konfigurere 4 JAR i vores java-projekt.


Klik på knappen Download for at downloade JAR'erne

[buttonleads form_title = ”Download Code” redirect_url = https: //edureka.wistia.com/medias/wtboe1hmkr/download? media_file_id = 76900193 course_id = 166 button_text = ”Download JAR”]

c ++ ved hjælp af navneområdet

Nu eksporterer vi JAR-filer til begge java-koder. Kontroller nedenstående trin for oprettelse af JAR.

Her har vi vist for et program, fortsæt på samme måde også i det næste program.

Efter oprettelse af JAR'er og tekstfiler har vi flyttet alle data til HDFS-klynge, som er afbildet af følgende billeder:

I vores datasæt er felter adskilt mellem kommaer (,).

Efter at have flyttet filen, har vi oprettet script med .pig-udvidelse og lagt alle kommandoer i den scriptfil.

Nu i terminalen skal du skrive PIG efterfulgt af navnet på scriptfilen, der vises i følgende billede:

Her er dette output til kørsel af griseskriptet.

Har du et spørgsmål til os? Nævn dem i kommentarfeltet, så vender vi tilbage til dig.

Relaterede indlæg:

Trin til oprettelse af UDF i Apache Pig

Introduktion til Apache Hive