Griseprogrammering: Apache Pig Script med UDF i HDFS-modus



Griseprogrammering: Apache Pig Script med UDF i HDFS-modus. Her er et blogginnlegg for å kjøre Apache Pig-skript med UDF i HDFS-modus ...

I de forrige blogginnleggene så vi hvordan vi skulle begynne med Griseprogrammering og skripting . Vi har sett trinnene for å skrive en Griseskript i HDFS-modus og uten UDF. I den tredje delen av denne serien vil vi gjennomgå trinnene for å skrive et griseskript med UDF i HDFS-modus .

hva er et navneområde i c ++

Vi har forklart hvordan du implementerer Pig UDF ved å lage innebygde funksjoner for å forklare funksjonaliteten til Pig innebygd funksjon. For bedre forklaring har vi tatt to innebygde funksjoner. Vi har gjort dette ved hjelp av et griseskript.





Her har vi tatt ett eksempel, og vi har brukt både UDF (brukerdefinerte funksjoner), dvs. lage en streng med store bokstaver og ta en verdi og øke dens kraft.

Datasettet er vist nedenfor som vi skal bruke i dette eksemplet:



table

Vårt mål er å lage 1. kolonnebokstav med store bokstaver og øke kraften til 2. kolonne med verdien av 3. kolonne.

La oss begynne med å skrive javakoden for hver UDF. Vi må også konfigurere 4 JARer i vårt java-prosjekt for å unngå kompileringsfeil.
Først vil vi lage java-programmer, begge er gitt 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 utvider EvalFunc {public String exec (Tuple input) kaster IOException {if (input == null || input.size () == 0) return null try {String str = (String) input.get (0) str = str.toUpperCase () return str} catch (Unntak e) {kast WrappedIOException.wrap ('Fanget unntak behandlingsinngangsrad', 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 utvider EvalFunc {public Long exec (Tuple input) kaster IOException {prøv { int base = (Integer) input.get (0) int exponent = (Integer) input.get (1) long result = 1 / * Sannsynligvis ikke den mest effektive metoden ... * / for (int i = 0 i resultat) {// Vi overløp. Gi en advarsel, men ikke kast et // unntak. advare ('Overflow!', PigWarning.TOO_LARGE_FOR_INT) // Retur null vil indikere for Pig at vi mislyktes, men // vi vil fortsette utførelsen. return null}} return result} catch (Unntak e) {// Å kaste et unntak fører til at oppgaven mislykkes. kaste ny IOException ('Noe dårlig skjedde!', e)}}}

For å fjerne kompileringsfeil, må vi konfigurere 4 JAR i vårt java-prosjekt.


Klikk på Last ned-knappen for å laste ned JAR

[buttonleads form_title = ”Last ned kode” redirect_url = https: //edureka.wistia.com/medias/wtboe1hmkr/download? media_file_id = 76900193 course_id = 166 button_text = ”Last ned JARer”]

Nå eksporterer vi JAR-filer for begge Java-kodene. Vennligst sjekk trinnene nedenfor for å lage JAR.

Her har vi vist for ett program, fortsett på samme måte i neste program også.

Etter å ha opprettet JAR-ene og tekstfilene, har vi flyttet alle dataene til HDFS-klyngen, som er avbildet av følgende bilder:

I datasettet vårt er felt kommadelt (,).

cloudera sertifisert administrator for apache hadoop

Etter å ha flyttet filen, har vi opprettet skript med .pig-utvidelse og lagt alle kommandoene i skriptfilen.

Nå i terminalen, skriv inn PIG etterfulgt av navnet på skriptfilen som vises i følgende bilde:

Her er dette resultatet for å kjøre griseskriptet.

Har du spørsmål til oss? Vennligst nevn dem i kommentarfeltet, så kommer vi tilbake til deg.

Relaterte innlegg:

hvordan konvertere streng til dato i java

Fremgangsmåte for å lage UDF i Apache Pig

Introduksjon til Apache Hive