Поделиться через


Использование Apache Pig с Apache Hadoop в HDInsight

Узнайте, как использовать Apache Pig с HDInsight.

Apache Pig — это платформа, позволяющая создавать программы для Hadoop с помощью процедурного языка, известного как Pig Latin. Pig — это альтернатива Java для создания решений MapReduce и включена в Azure HDInsight. Воспользуйтесь приведенной таблицей, чтобы узнать, как можно использовать Pig с HDInsight.

Причины использования Apache Pig

Одна из трудностей обработки данных с помощью MapReduce в Hadoop заключается в реализации логики обработки с использованием только функций map и reduce. Для сложных задач часто приходится разбивать обработку на несколько операций MapReduce, соединенных друг с другом, чтобы достичь желаемого результата.

Pig позволяет определить обработку как ряд преобразований, через которые проходят данные для получения желаемого результата.

Язык Pig Latin позволяет описывать поток данных так, чтобы из необработанных входных данных можно было получить нужный результата посредством одного или нескольких преобразований. Программы Pig Latin следуют общему шаблону:

  • Загрузка: чтение данных для обработки из файловой системы.

  • Преобразование: обработка данных.

  • Дамп или сохранение: вывод данных на экран или сохранение их для дальнейшей обработки.

Пользовательские функции

Pig Latin также поддерживает пользовательские функции, позволяющие вызывать внешние компоненты, реализующие логику, которую трудно смоделировать в Pig Latin.

Дополнительные сведения о Pig Latin см. в справочном руководстве по Pig Latin 1 и справочном руководстве по Pig Latin 2.

Демонстрационные данные

HDInsight предоставляет различные наборы демонстрационных данных, которые хранятся в каталогах /example/data и /HdiSamples. Эти каталоги находятся в хранилище по умолчанию для кластера. В примере Pig в этом документе используется файл Log4j из /example/data/sample.log.

Каждый журнал в файле состоит из строки полей, содержащей поле [LOG LEVEL] для отображения типа и серьезности.

2012-02-03 20:26:41 SampleClass3 [ERROR] verbose detail for id 1527353937

В предыдущем примере уровень журнала имеет значение ERROR ("ошибка").

Примечание.

Вы также можете создать файл log4j с помощью средства ведения журнала Apache Log4j, а затем отправить этот файл в большой двоичный объект. Дополнительные сведения см. в статье Отправка данных для заданий Hadoop в HDInsight. Дополнительные сведения о том, каким образом большие двоичные объекты в службе хранилища Azure используются с HDInsight, см. в статье Использование хранилища BLOB-объектов Azure с HDInsight.

Пример задания

Следующее задание Pig Latin загружает файл sample.log из хранилища по умолчанию для кластера HDInsight. Затем оно выполняет ряд преобразований, которые позволяют подсчитать, сколько раз каждый из уровней ведения журнала был указан во входных данных. Результаты записываются в поток STDOUT.

LOGS = LOAD 'wasb:///example/data/sample.log';
LEVELS = foreach LOGS generate REGEX_EXTRACT($0, '(TRACE|DEBUG|INFO|WARN|ERROR|FATAL)', 1)  as LOGLEVEL;
FILTEREDLEVELS = FILTER LEVELS by LOGLEVEL is not null;
GROUPEDLEVELS = GROUP FILTEREDLEVELS by LOGLEVEL;
FREQUENCIES = foreach GROUPEDLEVELS generate group as LOGLEVEL, COUNT(FILTEREDLEVELS.LOGLEVEL) as COUNT;
RESULT = order FREQUENCIES by COUNT desc;
DUMP RESULT;

На следующем рисунке показано, что каждое из преобразований делает с данным.

Графическое представление преобразований.

Запуск задания Pig Latin

HDInsight может выполнять задания Pig Latin с помощью различных методов. Используйте следующую таблицу, чтобы решить, какой метод подходит вам, а затем перейдите по ссылке к пошаговому руководству.

Использование Pig и SQL Server Integration Services

С помощью служб SQL Server Integration Services (SSIS) можно выполнить задание Pig. Пакет дополнительных компонентов Azure для служб SSIS предоставляет следующие компоненты, которые работают с заданиями Pig в HDInsight.

Узнать больше о пакете дополнительных компонентов Azure для служб SSIS можно здесь.

Следующие шаги

Теперь, когда вы узнали, как использовать Pig в HDInsight, воспользуйтесь следующими ссылками, чтобы изучить другие способы работы с Azure HDInsight.