В предишните публикации в блога видяхме как да започнем Свине програмиране и скриптове . Видяхме стъпките за писане на Pig Script в режим HDFS и без СДС. В третата част на тази поредица ще разгледаме стъпките за писане на Pig скрипт с UDF в режим HDFS .
Обяснихме как да приложим Pig UDF, като създадем вградени функции, за да обясним функционалността на Pig вградена функция. За по-добро обяснение сме взели две вградени функции. Направихме това с помощта на свински скрипт.
Тук взехме един пример и използвахме както UDF (дефинирани от потребителя функции), т.е.правяне на низ в главни букви и вземане на стойност и повишаване на мощността му.
Наборът от данни е изобразен по-долу, който ще използваме в този пример:
Нашата цел е да направим буква от 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