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



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

В предыдущих сообщениях блога мы видели, как начать с Программирование свиней и сценарии . Мы видели, как написать Скрипт Pig в режиме HDFS и без UDF. В третьей части этой серии мы рассмотрим шаги по написанию сценария Pig с UDF в режиме HDFS .

Мы объяснили, как реализовать Pig UDF, создав встроенные функции, чтобы объяснить функциональность встроенной функции Pig. Для лучшего объяснения мы взяли две встроенные функции. Мы сделали это с помощью скрипта свиньи.





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

Ниже представлен набор данных, который мы собираемся использовать в этом примере:



table

Наша цель - сделать букву 1-го столбца заглавными и повысить степень 2-го столбца до значения 3-го столбца.

Начнем с написания кода Java для каждой UDF. Также нам нужно настроить 4 JAR в нашем java-проекте, чтобы избежать ошибок компиляции.
Сначала мы создадим 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 extends EvalFunc {public String exec (ввод кортежа) выдает исключение 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 ('Перехваченная входная строка обработки исключения', 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 (ввод кортежа) выдает исключение IOException {try { int base = (Integer) input.get (0) int exponent = (Integer) input.get (1) long result = 1 / * Вероятно, не самый эффективный метод ... * / for (int i = 0 i result) {// Мы переполнились. Выдайте предупреждение, но не // исключение. warn ('Overflow!', PigWarning.TOO_LARGE_FOR_INT) // Возвращение null укажет Pig, что мы потерпели неудачу, но // мы хотим продолжить выполнение. return null}} return result} catch (Exception e) {// Выдача исключения приведет к сбою задачи. throw new IOException ('Произошло что-то плохое!', e)}}}

Чтобы удалить ошибки компиляции, нам нужно настроить 4 JAR в нашем java-проекте.


Нажмите кнопку «Загрузить», чтобы загрузить файлы 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, что показано на следующих изображениях:

В нашем наборе данных поля разделены запятыми (,).

После перемещения файла мы создали сценарий с расширением .pig и поместили все команды в этот файл сценария.

Теперь в терминале введите PIG, а затем имя файла сценария, которое показано на следующем изображении:

Вот результат выполнения сценария pig.

Есть вопрос к нам? Укажите их в комментариях, и мы свяжемся с вами.

Похожие сообщения:

Шаги по созданию UDF в Apache Pig

Введение в Apache Hive