Programování prasat: Apache Pig Script s UDF v režimu HDFS



Programování prasat: Apache Pig Script s UDF v režimu HDFS. Zde je blogový příspěvek ke spuštění skriptu Apache Pig s UDF v režimu HDFS ...

V předchozích příspěvcích blogu jsme viděli, jak začít Programování a skriptování prasat . Viděli jsme kroky k napsání a Pig Script v režimu HDFS a bez UDF. Ve třetí části této série přezkoumáme kroky, se kterými budete psát skript Pig UDF v režimu HDFS .

Vysvětlili jsme, jak implementovat Pig UDF vytvořením vestavěných funkcí, abychom vysvětlili funkčnost vestavěné funkce Pig. Pro lepší vysvětlení jsme vzali dvě vestavěné funkce. Udělali jsme to pomocí prasečího skriptu.





Zde jsme si vzali jeden příklad a použili jsme jak UDF (uživatelem definované funkce), tj. Vytvoření řetězce velkými písmeny, převzetí hodnoty a zvýšení jeho síly.

Níže je zobrazena datová sada, kterou v tomto příkladu použijeme:



table

Naším cílem je vytvořit velká písmena prvního sloupce a zvýšit výkon druhého sloupce s hodnotou 3. sloupce.

Začněme psaním java kódu pro každý UDF. Také musíme nakonfigurovat 4 JAR v našem projektu Java, abychom se vyhnuli chybám při kompilaci.
Nejprve vytvoříme java programy, oba jsou uvedeny níže:



Upper.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') veřejná třída Upper extends EvalFunc {public String exec (Tuple input) vyvolá IOException {if (input == null || input.size () == 0) return null try {String str = (String) input.get (0) str = str.toUpperCase () return str} chytit (Výjimka e) {hodit WrappedIOException.wrap ('Zachycena výjimka pro zpracování vstupního řádku', e)}}}

Power.java

import java.io.IOException import org.apache.pig.EvalFunc import org.apache.pig.PigWarning import org.apache.pig.data.Tuple veřejná třída Pow rozšiřuje EvalFunc {public Long exec (vstup Tuple) hodí IOException {try { int base = (Integer) input.get (0) int exponent = (Integer) input.get (1) long result = 1 / * Pravděpodobně to není nejefektivnější metoda ... * / for (int i = 0 i result) {// Přetekli jsme. Dejte varování, ale neházejte // výjimku. warn ('Overflow!', PigWarning.TOO_LARGE_FOR_INT) // Vrácení hodnoty null indikuje Pigovi, že jsme selhali, ale // chceme pokračovat v provádění. return null}} return result} catch (Výjimka e) {// Vrácení výjimky způsobí selhání úlohy. hodit novou IOException ('Něco špatného se stalo!', e)}}}

Abychom odstranili chyby kompilace, musíme provést konfiguraci 4 JAR v našem projektu Java.

statická členská funkce c ++


Kliknutím na tlačítko Stáhnout stáhnete soubory JAR

[buttonleads form_title = ”Stáhnout kód” redirect_url = https: //edureka.wistia.com/medias/wtboe1hmkr/download? media_file_id = 76900193 course_id = 166 button_text = ”Stáhnout soubory JAR”]

Nyní exportujeme soubory JAR pro oba java kódy. Zkontrolujte, prosím, vytvoření JAR níže uvedených kroků.

Zde jsme ukázali pro jeden program, stejně postupujte i v dalším programu.

Po vytvoření souborů JAR a textových souborů jsme přesunuli všechna data do klastru HDFS, který je znázorněn na následujících obrázcích:

V naší datové sadě jsou pole oddělena čárkami (,).

implementace prioritní fronty v Javě

Po přesunutí souboru jsme vytvořili skript s příponou .pig a vložili všechny příkazy do tohoto souboru skriptu.

Nyní v terminálu zadejte PIG následovaný názvem souboru skriptu, který je zobrazen na následujícím obrázku:

předat hodnotu a předat odkaz java

Tady je výstup pro spuštění skriptu prase.

Máte na nás dotaz? Uveďte je prosím v sekci komentáře a my se vám ozveme.

Související příspěvky:

Kroky k vytvoření UDF v Apache Pig

Úvod do Apache Hive