Apache Pig - Архитектура

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

Для выполнения конкретной задачи Программисты, использующие Pig, программисты должны написать сценарий Pig, используя язык Pig Latin, и выполнить их, используя любой из механизмов выполнения (Grunt Shell, UDFs, Embedded). После выполнения эти сценарии пройдут серию преобразований, применяемых Pig Framework, для получения желаемого результата.

Внутри Apache Pig преобразует эти сценарии в серию заданий MapReduce и, таким образом, упрощает работу программиста. Архитектура Apache Pig показана ниже.

Компоненты Apache Pig

Как показано на рисунке, в структуре Apache Pig есть различные компоненты. Давайте посмотрим на основные компоненты.

Парсер

Первоначально скрипты Pig обрабатываются парсером. Он проверяет синтаксис сценария, выполняет проверку типов и другие разные проверки. Результатом синтаксического анализа будет DAG (направленный ациклический граф), который представляет операторы и логические операторы Pig Latin.

В группе DAG логические операторы сценария представлены в виде узлов, а потоки данных - в виде ребер.

Оптимизатор

Логический план (DAG) передается логическому оптимизатору, который выполняет логические оптимизации, такие как проекция и выталкивание.

Компилятор

Компилятор компилирует оптимизированный логический план в серию заданий MapReduce.

Механизм исполнения

Наконец, задания MapReduce отправляются в Hadoop в отсортированном порядке. Наконец, эти задания MapReduce выполняются в Hadoop, что дает желаемые результаты.

Модель данных Pig Latin

Модель данных Pig Latin полностью вложена и допускает сложные неатомарные типы данных, такие как map а также tuple. Ниже приводится схематическое представление модели данных Pig Latin.

Атом

Любое отдельное значение в Pig Latin, независимо от типа данных, называется Atom. Он хранится в виде строки и может использоваться как строка и число. int, long, float, double, chararray и bytearray - это атомарные значения Pig. Часть данных или простое атомарное значение известно какfield.

Example - «раджа» или «30»

Кортеж

Запись, состоящая из упорядоченного набора полей, называется кортежем, поля могут быть любого типа. Кортеж похож на строку в таблице СУБД.

Example - (Раджа, 30)

Мешок

Мешок - это неупорядоченный набор кортежей. Другими словами, набор кортежей (неуникальных) называется мешком. Каждый кортеж может иметь любое количество полей (гибкая схема). Сумка обозначается символом '{}'. Она похожа на таблицу в РСУБД, но в отличие от таблицы в РСУБД не обязательно, чтобы каждый кортеж содержал одинаковое количество полей или чтобы поля в одной позиции (столбце) имели один и тот же тип.

Example - {(Раджа, 30), (Мохаммад, 45)}

Сумка может быть полем в отношении; в этом контексте он известен какinner bag.

Example - {Раджа, 30 лет, {9848022338, [email protected],}}

карта

Карта (или карта данных) - это набор пар ключ-значение. Вkeyдолжен иметь тип chararray и быть уникальным. Вvalueможет быть любого типа. Он представлен как '[]'

Example - [имя # Раджа, возраст # 30]

Связь

Отношение - это набор кортежей. Отношения в Pig Latin неупорядочены (нет гарантии, что кортежи обрабатываются в каком-либо определенном порядке).