Статьи

Hadoop: Начало работы со свиньей

Что такое свинья?

Pig — это язык сценариев высокого уровня, который используется с Apache Hadoop. Свинья позволяет аналитикам данных писать сложные преобразования данных, не зная Java. Простой SQL-подобный язык сценариев Pig называется Pig Latin и предназначен для разработчиков, уже знакомых с языками сценариев и SQL. Скрипты Pig преобразуются в задания MapReduce, которые работают с данными, хранящимися в HDFS (см. Схему ниже).

С помощью средства определяемых пользователем функций (UDF) в Pig, Pig может вызывать код на многих языках, таких как JRuby, Jython и Java. Вы также можете вставлять сценарии Pig на других языках. В результате вы можете использовать Pig в качестве компонента для создания более крупных и сложных приложений, которые решают реальные бизнес-проблемы.

Свинья Архитектура

Свинья Архитектура

Как используется свинья?

  • Быстрое прототипирование алгоритмов обработки больших массивов данных.
  • Обработка данных для веб-поисковых платформ.
  • Специальные запросы к большим наборам данных.
  • Обработка веб-журнала.

Свинья Элементы

Свинья состоит из трех элементов —

  • Свинья латинская
    • Язык сценариев высокого уровня
    • Нет схемы
    • Переведено на MapReduce Jobs
  • Pig Grunt Shell
    • Интерактивная оболочка для выполнения команд свиньи.
  • Копилка
    • Общий репозиторий для пользовательских функций (объяснено позже).

Свинья Латинская Заявления 

Операторы Pig Latin — это основные конструкции, которые вы используете для обработки данных с использованием Pig. Оператор Pig Latin — это оператор, который принимает отношение в качестве входных данных и создает другое отношение в качестве выходных данных (кроме операторов LOAD и STORE).

Свиньи латинские высказывания обычно организованы следующим образом:

  • Оператор LOAD для чтения данных из файловой системы.
  • Серия операторов «преобразования» для обработки данных.
  • Оператор DUMP для просмотра результатов или оператор STORE для сохранения результатов.

Обратите внимание, что для генерации вывода требуется оператор DUMP или STORE.

  • В этом примере Pig проверит, но не выполнит операторы LOAD и FOREACH.
    A = LOAD 'student' USING PigStorage() AS (name:chararray, age:int, gpa:float);
    B = FOREACH A GENERATE name;
    
  • В этом примере Pig проверит, а затем выполнит операторы LOAD, FOREACH и DUMP.
    A = LOAD 'student' USING PigStorage() AS (name:chararray, age:int, gpa:float);
    B = FOREACH A GENERATE name;
    DUMP B;
    (John)
    (Mary)
    (Bill)
    (Joe)

Хранение промежуточных результатов

Pig хранит промежуточные данные, сгенерированные между заданиями MapReduce, во временном местоположении в HDFS. Это местоположение должно уже существовать в HDFS перед использованием. Это местоположение можно настроить с помощью  свойства pig.temp.dir .

Хранение окончательных результатов

Используйте оператор STORE и функции загрузки / сохранения для записи результатов в файловую систему (PigStorage является функцией хранилища по умолчанию).

Примечание. На  этапе тестирования / отладки вашей реализации вы можете использовать DUMP для отображения результатов на экране вашего терминала. Однако в производственной среде вы всегда хотите использовать оператор STORE для сохранения ваших результатов.

Отладка свиньи латынь

Pig Latin предоставляет операторов, которые могут помочь вам отладить ваши выражения Pig Latin:

  • Используйте оператор DUMP для отображения результатов на экране вашего терминала.
  • Используйте оператор DESCRIBE для просмотра схемы отношения.
  • Используйте оператор EXPLAIN для просмотра логических, физических или картографических планов выполнения для вычисления отношения.
  • Используйте оператор ILLUSTRATE для просмотра пошагового выполнения ряда операторов.

Что такое пользовательские функции Pig (UDF)?

Pig обеспечивает расширенную поддержку пользовательских функций (UDF) как способ задания пользовательской обработки. Функции могут быть частью почти каждого оператора в Pig.UDF — это очень мощная функциональность для выполнения многих сложных операций с данными.  Piggy Bank  — это место, где пользователи Pig могут делиться своими функциями (UDF).

Пример:

REGISTER saurzcodeUDF.jar;
A = LOAD 'employee_data' AS (name: chararray, age: int, designation: chararray);
B = FOREACH A GENERATE saurzcodeUDF.UPPER(name);
DUMP B;

This article was just a Getting Started Article on Pig , I will cover further details about How to to Write Pig Latin commands for some basic operations like JOIN,FILTER,GROUP, ORDER etc. , also how to make your own UDFs for processing on Hadoop cluster.

References :-