Programovanie ošípaných: Apache Pig Script s UDF v režime HDFS



Programovanie ošípaných: Apache Pig Script s UDF v režime HDFS. Tu je blogový príspevok na spustenie skriptu Apache Pig s UDF v režime HDFS ...

V predchádzajúcich blogových príspevkoch sme videli, ako začať Programovanie a skriptovanie ošípaných . Videli sme kroky, ako napísať a Pig Script v režime HDFS a bez UDF. V tretej časti tejto série preskúmame kroky potrebné na napísanie skriptu Pig UDF v režime HDFS .

Vysvetlili sme, ako implementovať Pig UDF vytvorením vstavaných funkcií na vysvetlenie funkčnosti vstavanej funkcie Pig. Pre lepšie vysvetlenie sme vzali dve vstavané funkcie. Urobili sme to pomocou prasacieho písma.





Tu sme si vzali jeden príklad a použili sme ako UDF (užívateľom definované funkcie), t. J. Vytvorenie reťazca veľkými písmenami, získanie hodnoty a zvýšenie jeho sily.

Nižšie je zobrazený súbor údajov, ktorý v tomto príklade použijeme:



table

Naším cieľom je vytvoriť veľké písmeno v prvom stĺpci a zvýšiť výkonnosť druhého stĺpca s hodnotou 3. stĺpca.

Začnime písaním java kódu pre každý UDF. Musíme tiež nakonfigurovať 4 JAR v našom projekte Java, aby sme sa vyhli chybám pri kompilácii.
Najskôr vytvoríme programy Java, oba sú uvedené nižšie:



Horná.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') verejná trieda Horná časť rozširuje EvalFunc {public String exec (vstup Tuple) vyvolá IOException {if (input == null || input.size () == 0) return null try {String str = (String) input.get (0) str = str.toUpperCase () return str} catch (Výnimka e) {hod WrappedIOException.wrap ('Vstupný riadok na spracovanie výnimky pri spracovaní', e)}}}

Power.java

import java.io.IOException import org.apache.pig.EvalFunc import org.apache.pig.PigWarning import org.apache.pig.data.Tuple verejná trieda Pow rozširuje EvalFunc {public Long exec (vstup Tuple) hodí IOException {vyskúšať { int base = (Integer) input.get (0) int exponent = (Integer) input.get (1) long result = 1 / * Pravdepodobne nie najefektívnejšia metóda ... * / for (int i = 0 i result) {// Preliali sme sa. Dajte varovanie, ale nehádžte // výnimku. warn ('Overflow!', PigWarning.TOO_LARGE_FOR_INT) // Návrat null bude znamenať pre Pig, že sme zlyhali, ale // chceme pokračovať v exekúcii. return null}} return result} catch (Výnimka e) {// Vyhodenie výnimky spôsobí zlyhanie úlohy. hodiť novú IOException ('Něco zlé se stalo!', e)}}}

Aby sme odstránili chyby kompilácie, musíme ich nakonfigurovať 4 JAR v našom projekte Java.

plytká kópia a hlboká kópia v jave


Kliknutím na tlačidlo Stiahnutie stiahnete súbory JAR

[buttonleads form_title = ”Stiahnutie kódu” redirect_url = https: //edureka.wistia.com/medias/wtboe1hmkr/download? media_file_id = 76900193 course_id = 166 button_text = ”Stiahnutie súborov JAR”]

Teraz exportujeme súbory JAR pre oba kódy Java. Skontrolujte vytvorenie JAR podľa nasledujúcich krokov.

Tu sme si ukázali pre jeden program, rovnako postupujte aj v ďalšom programe.

Po vytvorení súborov JAR a textových súborov sme presunuli všetky údaje do klastra HDFS, ktorý je znázornený na nasledujúcich obrázkoch:

V našej množine údajov sú polia oddelené čiarkou (,).

implementácia prioritného frontu v jave

Po presunutí súboru sme vytvorili skript s príponou .pig a vložili všetky príkazy do tohto súboru skriptu.

Teraz v termináli zadajte PIG a za ním názov súboru skriptu, ktorý je uvedený na nasledujúcom obrázku:

čo je serializovateľné v jave

Toto je výstup pre spustenie prasacieho skriptu.

Máte na nás otázku? Uveďte ich prosím v sekcii komentárov a my sa vám ozveme.

Súvisiace príspevky:

Kroky na vytvorenie UDF v Apache Pig

Úvod do Apache Hive