W poprzednich postach na blogu widzieliśmy, jak zacząć Programowanie i skrypty świni . Widzieliśmy kroki, aby napisać plik Pig Script w trybie HDFS i bez UDF. W trzeciej części tej serii przyjrzymy się krokom pisania skryptu Pig UDF w trybie HDFS .
Wyjaśniliśmy, jak zaimplementować Pig UDF, tworząc wbudowane funkcje w celu wyjaśnienia funkcjonalności wbudowanej funkcji Pig. Aby lepiej wyjaśnić, przyjęliśmy dwie wbudowane funkcje. Zrobiliśmy to za pomocą skryptu świni.
Tutaj wzięliśmy jeden przykład i użyliśmy obu funkcji UDF (funkcje zdefiniowane przez użytkownika), tj. Tworzenie ciągu znaków z dużych liter oraz przyjmowanie wartości i zwiększanie jej mocy.
Zbiór danych jest przedstawiony poniżej, którego użyjemy w tym przykładzie:
abstrakcja w C ++
Naszym celem jest, aby pierwsza litera kolumny była wielkimi literami i podniesienie potęgi drugiej kolumny o wartość trzeciej kolumny.
Zacznijmy od napisania kodu java dla każdego UDF. Musimy również skonfigurować 4 pliki JAR w naszym projekcie Java, aby uniknąć błędów kompilacji.
Najpierw stworzymy programy java, oba podane poniżej:
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') public class Upper extends EvalFunc {public String exec (Tuple input) rzuca IOException {if (input == null || input.size () == 0) return null try {String str = (String) input.get (0) str = str.toUpperCase () return str} catch (Exception e) {throw WrappedIOException.wrap ('Przechwycony wiersz wejściowy przetwarzania wyjątku', e)}}}
Power.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) rzuca IOException {try { int base = (Integer) input.get (0) int exponent = (Integer) input.get (1) long result = 1 / * Prawdopodobnie nie jest to najbardziej wydajna metoda ... * / for (int i = 0 i result) {// Przepełniliśmy. Podaj ostrzeżenie, ale nie zgłaszaj // wyjątku. warn ('Overflow!', PigWarning.TOO_LARGE_FOR_INT) // Zwrócenie wartości null wskaże Pig, że nie powiodło się, ale // chcemy kontynuować wykonywanie. return null}} return result} catch (Exception e) {// Zgłoszenie wyjątku spowoduje niepowodzenie zadania. wrzuć nowy IOException ('Coś złego się stało!', e)}}}
Aby usunąć błędy kompilacji, musimy skonfigurować 4 JAR w naszym projekcie java.
Kliknij przycisk Pobierz, aby pobrać pliki JAR
[buttonleads form_title = ”Pobierz kod” redirect_url = https: //edureka.wistia.com/medias/wtboe1hmkr/download? media_file_id = 76900193 course_id = 166 button_text = ”Pobierz pliki JAR”]
Teraz eksportujemy pliki JAR dla obu kodów java. Sprawdź poniższe kroki tworzenia pliku JAR.
Tutaj pokazaliśmy dla jednego programu, postępuj w ten sam sposób również w następnym programie.
Po utworzeniu plików JAR i plików tekstowych przenieśliśmy wszystkie dane do klastra HDFS, co przedstawiają następujące obrazy:
W naszym zbiorze danych pola są oddzielone przecinkami (,).
co to jest sprzęganie w java
Po przeniesieniu pliku utworzyliśmy skrypt z rozszerzeniem .pig i umieściliśmy wszystkie polecenia w tym pliku skryptu.
Teraz w terminalu wpisz PIG, a następnie nazwę pliku skryptu, która jest pokazana na poniższym obrazku:
Tutaj to jest wynik uruchomienia skryptu świni.
lista zdarzeń javascript z przykładami
Masz do nas pytanie? Wspomnij o nich w sekcji komentarzy, a my skontaktujemy się z Tobą.
Powiązane posty:
Kroki tworzenia UDF w Apache Pig