Програмиране на свине: Apache Pig Script с UDF в режим HDFS



Програмиране на свине: Apache Pig Script с UDF в режим HDFS. Ето публикация в блог за стартиране на Apache Pig скрипт с UDF в режим HDFS ...

В предишните публикации в блога видяхме как да започнем Свине програмиране и скриптове . Видяхме стъпките за писане на Pig Script в режим HDFS и без СДС. В третата част на тази поредица ще разгледаме стъпките за писане на Pig скрипт с UDF в режим HDFS .

Обяснихме как да приложим Pig UDF, като създадем вградени функции, за да обясним функционалността на Pig вградена функция. За по-добро обяснение сме взели две вградени функции. Направихме това с помощта на свински скрипт.





Тук взехме един пример и използвахме както UDF (дефинирани от потребителя функции), т.е.правяне на низ в главни букви и вземане на стойност и повишаване на мощността му.

Наборът от данни е изобразен по-долу, който ще използваме в този пример:



table

Нашата цел е да направим буква от 1-ва колона с главни букви и да повишим силата на 2-ра колона със стойността на 3-та колона.

Нека започнем с писането на java кода за всеки UDF. Също така трябва да конфигурираме 4 JAR в нашия java проект, за да избегнем грешките при компилацията.
Първо, ще създадем java програми, и двете са дадени по-долу:



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 разширява EvalFunc {public String exec (Tuple input) хвърля IOException {if (input == null || input.size () == 0) return null try {String str = (String) input.get (0) str = str.toUpperCase () return str} улов (Изключение e) {хвърляне WrappedIOException.wrap ('Уловена обработка на изключение входен ред', e)}}}

Power.java

import java.io.IOException import org.apache.pig.EvalFunc import org.apache.pig.PigWarning import org.apache.pig.data.Tuple публичен клас Pow extends EvalFunc {public Long exec (Tuple input) хвърля IOException {try { int base = (Integer) input.get (0) int exponent = (Integer) input.get (1) long result = 1 / * Вероятно не е най-ефективният метод ... * / for (int i = 0 i result) {// Преляхме. Дайте предупреждение, но не хвърляйте // изключение. warn ('Преливане!', PigWarning.TOO_LARGE_FOR_INT) // Връщането на null ще покаже на Pig, че не сме успели, но // искаме да продължим изпълнението. return null}} return result} catch (Exception e) {// Хвърлянето на изключение ще доведе до неуспех на задачата. хвърли нов IOException ('Нещо лошо се случи!', д)}}}

За да премахнем грешки при компилацията, трябва да конфигурираме 4 JAR в нашия java проект.

system.exit (0)


Щракнете върху бутона Изтегляне, за да изтеглите JAR-овете

[buttonleads form_title = ”Изтегляне на код” redirect_url = https: //edureka.wistia.com/medias/wtboe1hmkr/download? media_file_id = 76900193 course_id = 166 button_text = ”Изтегляне на JAR файлове”]

Сега експортираме JAR файлове за двата Java кода. Моля, проверете стъпките по-долу за създаване на JAR.

Тук показахме за една програма, продължете по същия начин и в следващата програма.

След създаването на JAR и текстовите файлове сме преместили всички данни в HDFS клъстер, който е изобразен със следните изображения:

В нашия набор от данни полетата са разделени със запетая (,).

sql сървър урок за начинаещи с примери

След преместването на файла създадохме скрипт с разширение .pig и поставихме всички команди в него.

Сега в терминала напишете PIG, последвано от името на файла на скрипта, който е показан на следното изображение:

какво прави .trim в java

Ето това е изходът за стартиране на скрипта за прасета.

Имате въпрос към нас? Моля, споменете ги в раздела за коментари и ние ще се свържем с вас.

Подобни публикации:

Стъпки за създаване на UDF в Apache Pig

Въведение в Apache Hive