Pig что за файл

Обновлено: 07.07.2024

Учитывая популярность платформы Hadoop, не удивительно, что ее экосистема постоянно развивается. Одной из набирающих популярность областей является создание приложений для платформы Hadoop. Несмотря на то, что разработка приложений в соответствии с концепцией Map и Reduce не слишком сложна, она требует наличия определенных навыков в программировании. Apache Pig меняет такое положение вещей, создавая более простую абстракцию процедурного языка над платформой MapReduce, чтобы реализовать SQL-подобный интерфейс для приложений Hadoop. Таким образом, вместо того, чтобы создавать отдельное приложение MapReduce, вы можете написать простой сценарий на Pig Latin, который автоматически распараллеливается и распределяется между узлами кластера.

Как видите, в этом простом сценарии реализован простой процесс, который бы потребовал написания значительно большего объема кода, если бы реализовывался непосредственно в традиционной модели MapReduce. По сравнению с традиционным написанием приложений для MapReduce это позволяет существенно упростить изучение Hadoop и быстрее приступить к работе с данными.

Теперь рассмотрим язык Pig и его возможности более подробно.

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

В сценариях Pig Latin часто используется определенный алгоритм, в котором данные считываются из файловой системы, затем над ними выполняется ряд действий (одно или несколько преобразований), после чего конечная структура записывается обратно в файловую систему. Именно этот алгоритм в простейшей форме (с одним преобразованием) был использован в листинге 1.

В Pig имеется богатый набор типов данных - поддерживаются не только высокоуровневые объекты (например, массивы, записи и сопоставления), но также и простые типы данных, например int, long, float, double, chararray и bytearray. К простым типам данных можно применять ряд арифметических операций (например add, subtract, multiply, divide и module), а также условный оператор bincond, который работает так же, как оператор ternary языка C. Как и следует ожидать, в Pig имеется полный набор операторов сравнения, включая сопоставление с шаблонами с помощью регулярных выражений.

Операторы Pig Latin работают с отношениями (и называются реляционными операторами ). Из листинга 1 видно, что в нем присутствуют операторы для загрузки и записи данных в файловую систему. Также в нем выполняется фильтрация (FILTER) данных путем последовательного перебора всех строк массива. Эта функциональность широко используется для удаления из массива всех данных, не требующихся для последующих операций. Если же необходимо последовательно перебирать столбцы, а не строки массива, то можно использовать для этого оператор FOREACH, который позволяет вложенным операциям (таким как FILTER и ORDER) преобразовывать данные в процессе итерации.

Оператор ORDER сортирует массив по одному или нескольким полям. Оператор JOIN выполняет внутренние или внешние соединения двух или более массивов в результирующий массив на основе их общих полей. Оператор SPLIT разделяет массив на два или более массива в соответствии с некоторым пользовательским выражением. Наконец, оператор GROUP группирует данные одного или нескольких массивов в соответствии с некоторым выражением. В таблице 1 приведен неполный список реляционных операторов Pig.

Таблица 1. Неполный список реляционных операторов Pig Latin

Оператор Описание
FILTER Выбирает набор записей из массива в соответствии с заданным условием.
FOREACH Выполняет итерации по записям массива и преобразование данных.
GROUP Группирует данные в один или несколько массивов.
JOIN Соединяет два или несколько массивов (внутреннее или внешнее соединение).
LOAD Загружает данные из файловой системы.
ORDER Сортирует массив по одному или нескольким полям.
SPLIT Разделяет массив на два или более массива.
STORE Сохраняет данные в файловой системе.

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

В предыдущих статьях о Hadoop я предлагал устанавливать и настраивать Hadoop из пакета, однако компания Cloudera упростила этот процесс, создав виртуальную машину ОС Linux с интегрированным в нее Hadoop. В этом случае вам придется загрузить исходный файл большего объема, но зато виртуальная машина уже содержит все настройки конфигурации Hadoop, Apache Hive и Pig. Таким образом, загрузив свободно доступный гипервизор 2 типа (VirtualBox или Kernel-based Virtual Machine [KVM]), вы получите полностью настроенную и готовую к использованию среду Hadoop.

После загрузки требуемого файла виртуальной машины необходимо создать виртуальную машину для вашего конкретного гипервизора.

Память для виртуальной машины Cloudera

Исходя из практики, 1 Гб оперативной памяти недостаточно для нормальной работы виртуальной машины. Необходимо выделить виртуальной машине 2 или даже 3 Гб памяти, чтобы обеспечить ее нормальную работу (т. е. не испытывать проблем с областью динамической памяти Java™).

После того, как виртуальная машина создана, можно запускать ее в среде VirtualBox, которая загружает ядро Linux и запускает все необходимые демоны Hadoop. По завершении загрузки можно открывать окно терминала и начинать работу с Hadoop и Pig.

Pig можно использовать в одном из двух режимов. Первый из них называется локальным (Local mode); он никак не связан с Hadoop и файловой системой HDFS (Hadoop Distributed File System), а все процессы выполняются в контекстах виртуальной машины Java (JVM) и локальной файловой системы. Второй режим называется режимом Mapreduce (Mapreduce mode); в нем используется файловая систем Hadoop и кластер.

Для работы в локальном режиме просто запустите Pig и укажите значение local в опции exectype. В результате вы попадете в командную оболочку Grunt, которая позволяет интерактивно вводить операторы Pig:

После этого вы можете интерактивно вводить код сценария Pig Latin и видеть результаты выполнения каждого оператора. Взгляните еще раз на листинг 1 и попытайтесь воспроизвести этот сценарий (см. листинг 2). Обратите внимание на то, что здесь мы не сохраняем данные в файл, а просто выводим их на экран в виде набора строк. Можно заметить, что в этом отсортированном выводе каждая строка log-файла (удовлетворяющая критерию поиска, заданному с помощью оператора FILTER) сама является массивом ограниченным круглыми скобками ().

Если бы вы использовали оператор STORE, то данные бы сохранились в директории с указанным именем (а не в обычном файле).

Для работы в режиме Mapreduce необходимо, чтобы Hadoop был запущен. Самый простой способ убедиться в этом - это получить список файлов корневой директории файловой системы Hadoop, как показано в листинге 3.

Если Hadoop запущен и работает, то вы увидите список, состоящий из одного или нескольких файлов, как показано выше. Теперь можно приступать к проверке работы Pig. Начнем с того, что запустим Pig, перейдем в корневую директорию файловой системы hdfs, и посмотрим, увидим ли мы то, что видели в HDFS, не находясь внутри Pig (см. листинг 4).

Пока все в порядке. Мы видим файловую систему Hadoop из Pig и теперь попытаемся загрузить в Pig некоторые данные из локальной файловой системы хоста. Скопируйте с помощью Pig файл из локальной файловой системы в файловую систему HDFS (см. листинг 5).

Теперь, когда тестовые данные успешно перенесены в файловую систему Hadoop, можно попробовать создать другой сценарий. Обратите внимание на то, что в Pig можно использовать команду cat для просмотра содержимого файла (просто чтобы убедиться в том, что он на месте). В нашем конкретном примере мы определим количество командных оболочек, назначенных пользователям в файле passwd (последний столбец файла passwd).

Для начала необходимо загрузить файл passwd из файловой системы HDFS в массив Pig. Это делается перед использованием оператора LOAD, но в нашем случае нам нужно разбить столбцы файла passwd на отдельные поля, поэтому мы используем функцию PigStorage, позволяющую указать для файла символ-разделитель (в нашем примере это будет двоеточие [ : ]). Также с помощью ключевого слова AS мы указываем отдельные поля (или схему), включая типы каждого из них (см. листинг 6).

Далее с помощью оператора GROUP сгруппируем строки этого массива по версиям содержащихся в них командных оболочек (см. листинг 7). Снова выведем результат на экран, чтобы проиллюстрировать результаты работы оператора GROUP. Обратите внимание на то, что теперь строки сгруппированы (в виде внутреннего массива) по версиям командных оболочек, которые указаны в начале каждой строки.

Однако нашей задачей является получение количества уникальных командных оболочек, содержащихся в файле passwd, и поэтому мы используем оператор FOREACH для выполнения итераций по всем строкам каждой группы, чтобы подсчитать (COUNT), сколько раз встречается каждая командная оболочка (см. листинг 8).

Примечание. Чтобы выполнить этот код в качестве сценария, просто сохраните его в файле, а затем запустите следующим образом: pig мойсценарий.pig.

Pig поддерживает несколько операторов диагностики, которые можно использовать для отладки сценариев Pig. Как видно из предыдущих примеров, оператор DUMP оказывается чрезвычайно полезным, если вы хотите увидеть не только данные, но и схему самих данных. Также можно использовать оператор DESCRIBE для получения подробного описания схемы массива (поле и тип).

Оператор EXPLAIN чуть более сложен, но очень полезен. Можно использовать этот оператор для указанного массива, чтобы увидеть, как физические операторы сгруппированы в задания map и reduce (т. е. как были получены данные).

Таблица 2 содержит список операторов диагностики Pig Latin и их описания.

Таблица 2. Операторы диагностики Pig Latin

Оператор Описание
DESCRIBE Возвращает схему массива.
DUMP Выводит содержимое массива на экран.
EXPLAIN Показывает планы исполнения MapReduce.

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

Как видно из этой короткой статьи, Pig - это мощный инструмент для выполнения запросов данных в кластере Hadoop. Этот язык настолько мощный, что по оценкам компании Yahoo! сценарии Pig Latin генерируют от 40% до 60% всей рабочей нагрузки в ее кластерах Hadoop. С учетом того, что в Yahoo! имеется 100 тыс. центральных процессоров и примерно на 50% из них запущен Hadoop, получается, что Pig занимает внушительную долю.

Однако Yahoo! - это не единственная компания, использующая достоинства Pig. Вы можете встретить Pig в таких компаниях, как Twitter (обработка log-файлов и поиск информации в твитах), AOL и MapQuest (анализ и пакетная обработка данных), LinkedIn; во всех этих компаниях Pig используется для поиска людей, которых вы, возможно, знаете. По имеющимся данным компания Ebay использует Pig для оптимизации поиска, а компания adyard использует Pig примерно в половине своих рекомендательных систем.

Для описания всех возможностей Pig по обработке больших объемов данных потребуется отдельная книга книге. Pig упрощает (особенно для людей, не являющимися профессиональными программистами) обработку больших объемов данных в кластерах Hadoop. Изначально Pig был разработан в 2006 году компанией Yahoo! и вскоре после этого был передан Apache Software Foundation, что позволило использовать его в мировом масштабе. Эта передача оказалась результатом осознания разработчиками Yahoo! всей мощи, которую Pig предоставлял людям, не являющимся программистами. По мере того, как Hadoop набирает популярность в качестве инфраструктуры, развивается и экосистема Hadoop, которая изменит представление о больших данных и их постоянно расширяющемся использовании.

Программы, которые поддерживают PIG расширение файла

В следующем списке перечислены программы, совместимые с файлами PIG, которые разделены на категории 2 в зависимости от операционной системы, в которой они доступны. PIG файлы можно встретить на всех системных платформах, включая мобильные, но нет гарантии, что каждый из них будет должным образом поддерживать такие файлы.

Программы, обслуживающие файл PIG

Как открыть файл PIG?

Причин, по которым у вас возникают проблемы с открытием файлов PIG в данной системе, может быть несколько. Что важно, все распространенные проблемы, связанные с файлами с расширением PIG, могут решать сами пользователи. Процесс быстрый и не требует участия ИТ-специалиста. Ниже приведен список рекомендаций, которые помогут вам выявить и решить проблемы, связанные с файлами.

Шаг 1. Получить Descent

Install software to open PIG file

Проблемы с открытием и работой с файлами PIG, скорее всего, связаны с отсутствием надлежащего программного обеспечения, совместимого с файлами PIG на вашем компьютере. Решение этой проблемы очень простое. Загрузите Descent и установите его на свое устройство. Полный список программ, сгруппированных по операционным системам, можно найти выше. Одним из наиболее безопасных способов загрузки программного обеспечения является использование ссылок официальных дистрибьюторов. Посетите сайт Descent и загрузите установщик.

Шаг 2. Проверьте версию Descent и обновите при необходимости

Update software that support file extension PIG

Если у вас уже установлен Descent в ваших системах и файлы PIG по-прежнему не открываются должным образом, проверьте, установлена ли у вас последняя версия программного обеспечения. Может также случиться, что создатели программного обеспечения, обновляя свои приложения, добавляют совместимость с другими, более новыми форматами файлов. Если у вас установлена более старая версия Descent, она может не поддерживать формат PIG. Последняя версия Descent должна поддерживать все форматы файлов, которые совместимы со старыми версиями программного обеспечения.

Шаг 3. Настройте приложение по умолчанию для открытия PIG файлов на Descent

Если у вас установлена последняя версия Descent и проблема сохраняется, выберите ее в качестве программы по умолчанию, которая будет использоваться для управления PIG на вашем устройстве. Метод довольно прост и мало меняется в разных операционных системах.

Associate software with PIG file on Windows

Изменить приложение по умолчанию в Windows

  • Выберите пункт Открыть с помощью в меню «Файл», к которому можно щелкнуть правой кнопкой мыши файл PIG.
  • Выберите Выбрать другое приложение → Еще приложения
  • Наконец, выберите Найти другое приложение на этом. , укажите папку, в которой установлен Descent, установите флажок Всегда использовать это приложение для открытия PIG файлы свой выбор, нажав кнопку ОК

Изменить приложение по умолчанию в Mac OS

Шаг 4. Убедитесь, что PIG не неисправен

Если вы выполнили инструкции из предыдущих шагов, но проблема все еще не решена, вам следует проверить файл PIG, о котором идет речь. Вероятно, файл поврежден и, следовательно, недоступен.

Check PIG file for viruses

1. PIG может быть заражен вредоносным ПО - обязательно проверьте его антивирусом.

Если случится так, что PIG инфицирован вирусом, это может быть причиной, которая мешает вам получить к нему доступ. Немедленно просканируйте файл с помощью антивирусного инструмента или просмотрите всю систему, чтобы убедиться, что вся система безопасна. PIG файл инфицирован вредоносным ПО? Следуйте инструкциям антивирусного программного обеспечения.

2. Убедитесь, что файл с расширением PIG завершен и не содержит ошибок

Если вы получили проблемный файл PIG от третьего лица, попросите его предоставить вам еще одну копию. В процессе копирования файла могут возникнуть ошибки, делающие файл неполным или поврежденным. Это может быть источником проблем с файлом. Если файл PIG был загружен из Интернета только частично, попробуйте загрузить его заново.

3. Убедитесь, что у вас есть соответствующие права доступа

Иногда для доступа к файлам пользователю необходимы права администратора. Выйдите из своей текущей учетной записи и войдите в учетную запись с достаточными правами доступа. Затем откройте файл Descent Texture Format.

4. Проверьте, может ли ваша система обрабатывать Descent

Если в системе недостаточно ресурсов для открытия файлов PIG, попробуйте закрыть все запущенные в данный момент приложения и повторите попытку.

5. Убедитесь, что у вас установлены последние версии драйверов, системных обновлений и исправлений

Современная система и драйверы не только делают ваш компьютер более безопасным, но также могут решить проблемы с файлом Descent Texture Format. Возможно, что одно из доступных обновлений системы или драйверов может решить проблемы с файлами PIG, влияющими на более старые версии данного программного обеспечения.

Вы хотите помочь?

Если у Вас есть дополнительная информация о расширение файла PIG мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле PIG.

Apache Pig – это высокоуровневый процедурный язык, предназначенный для выполнения запросов к большим слабо структурированным наборам данных с помощью платформ Hadoop и MapReduce. Pig упрощает использование Hadoop, позволяя выполнять SQL-подобные запросы к распределенным наборам данных. Характерным свойством программ Pig является то, что их структура поддается существенному распараллеливанию, что в свою очередь позволяет с его помощью обрабатывать очень большие наборы данных. Вместо того, чтобы создавать отдельное приложение MapReduce, можно написать простой сценарий на Pig Latin, который будет автоматически распараллеливаться и распределяться между узлами кластера [Источник 1] .

Содержание

Pig Latin

Pig Latin – относительно простой язык, выполняющий операторы. Оператор – это процедура, принимающая входные данные (например, массив, состоящий из набора записей) и формирующая на выходе другой массив. Массив – это структура, подобная таблице реляционной базы данных, в которой записи аналогичны строкам таблицы и состоят из полей. В сценариях Pig Latin часто используется определенный алгоритм, в котором данные считываются из файловой системы, затем над ними выполняется ряд действий (одно или несколько преобразований), после чего конечная структура записывается обратно в файловую систему.

В Pig имеется богатый набор типов данных – поддерживаются не только высокоуровневые объекты (например, массивы, записи и сопоставления), но также и простые типы данных, например int, long, float, double, chararray и bytearray. К простым типам данных можно применять ряд арифметических операций (например add , subtract , multiply , divide и module ), а также условный оператор bincond , который работает так же, как оператор ternary языка C. Как и следует ожидать, в Pig имеется полный набор операторов сравнения, включая сопоставление с шаблонами с помощью регулярных выражений.

Операторы Pig Latin работают с отношениями (и называются реляционными операторами). Ниже приведены основные реляционные операторы Pig:

  • FILTER - выбор набора записей из массива в соответствии с заданным условием.
  • FOREACH - выполнение итерации по записям массива и преобразование данных.
  • GROUP - группировка данных в один или несколько массивов.
  • JOIN - соединение двух или нескольких массивов (внутреннее или внешнее соединение).
  • LOAD - загрузка данных из файловой системы.
  • ORDER - сортировка массива по одному или нескольким полям.
  • SPLIT - разделение массива на два или более массива.
  • STORE - сохранение данных в файловой системе.

Установка

В этом разделе приведена инструкция по установке Apache Pig [Источник 2] .

Требования

Обязательные

Для пользователей Unix и Windows необходимо:

    (Можно запускать Pig вместе с другими версиями Hadoop с помощью присвоения переменной окружения HADOOP_HOME пути к Hadoop. Если переменная HADOOP_HOME не установлена, Pig будет запускаться со встроенной версией, на данный момент Hadoop 2.7.3.) (необходимо установить в JAVA_HOME путь до Java)

Опциональные

    (при использовании Streaming PythonUDFs) (для сборки из исходников)

Загрузка Pig

Для загрузки Pig необходимо произвести следующие действия:

Сборка Pig

Для сборки Pig необходимо произвести следующие действия:

  1. Загрузить исходные коды Pig из SVN:
  2. Произвести сборку: При успешной сборке должен быть создан файл pig.jar.
  3. Проверить файл pig.jar можно с помощью запуска unit-теста:

Видео с установкой

Работа с Pig и примеры использования

Команды Pig и операторы Pig Latin можно выполнять в различных режимах. Эти режимы приведены в таблице ниже:

Local Mode Tez Local Mode Spark Local Mode Mapreduce Mode Tez Mode Spark Mode
Интерактивный режим да экспериментальный да да да да
Режим Batch да экспериментальный да да да да

Режимы выполнения

В Pig есть 6 видов режимов выполнения:

  • Local Mode - для запуска Pig в этом режиме необходимо иметь доступ к одной машине; все файлы должны быть установлены и запущены с использованием локального хоста и файловой системы. Для перехода в этот режим используется следующая команда:
  • Tez Local Mode - этот режим похож на локальный за исключением того, что внутри Pig будет вызывать tez runtime движок. Для перехода в этот режим используется следующая команда:
  • Spark Local Mode - этот режим похож на локальный за исключением того, что внутри Pig будет вызывать spark runtime движок. Для перехода в этот режим используется следующая команда: Примечание: Spark Local Mode является экспериментальным. Некоторые запросы выдают ошибку на большом объеме данных в локальном режиме.
  • Mapreduce Mode - для запуска Pig в этом режиме необходимо иметь иметь доступ к кластеру Hadoop и установке HDFS. Этот режим является режимом по умолчанию. Для перехода в этот режим используется следующая команда:
  • Tez Mode - для запуска Pig в этом режиме необходимо иметь иметь доступ к кластеру Hadoop и установке HDFS. Для перехода в этот режим используется следующая команда:
  • Spark Mode - для запуска Pig в этом режиме необходимо иметь доступ к кластерам Spark, YARN или Mesos и к установке HDFS. Для перехода в этот режим используется следующая команда:

Интерактивный режим

Запустить Pig в интерактивном режиме можно с помощью оболочки Grunt. Вызвать оболочку Grunt можно командой pig в терминале.

В примере ниже выражение Pig Latin производит извлечение идентификаторов всех пользователей из файла /etc/passw. В первую очередь нужно скопировать файл /etc/passwd в локальную рабочую директорию. Затем перейти в оболочку Grunt (c помощью команды pig) и выполнить скрипт, указанный ниже. Оператор DUMP выведет результат в терминал.

Режим Batch

Запустить Pig в режиме Batch можно с помощью оболочки Grunt. Вызвать оболочку Grunt можно командой pig в терминале (в локальном режиме или в режиме hadoop). Пример ниже производит аналогичные действия, что и предыдущий, но при этом сохраняет результат в файл id.out с помощью оператора STORE . Сам скрипт хранится в файле id.pig.

Чтобы выполнить скрипт Pig из файла, например в локальном режиме, необходимо выполнить следующую команду:

Инструкции в Pig Latin

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

Инструкции Pig Latin обычно организованы следующим образом:

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

Стоит учитывать, что операторы DUMP или STORE необходимы для генерирования выходных данных.

  • В примере ниже Pig проверит, но не выполнит инструкции LOAD и FOREACH .
  • В примере ниже Pig проверит и затем выполнит инструкции LOAD, FOREACH, and DUMP.

Загрузка данных

Для загрузки данных в Pig и их чтения используются операторы LOAD и load/store (PigStorage является функцией загрузки по умолчанию)

Работа с данными

Pig позволяет преобразовывать данные множеством способов. Для стоит ознакомиться с этими операторами:

  • Для работы с кортежами или строками данных используется оператор FILTER . Для работы со столбцами данных используется оператор FOREACH .
  • Для группировки данных в одно отношение используется оператор GROUP . Для группировки данных в два или более отношений используются операторы COGROUP , внутренний JOIN и внешний JOIN .
  • Для объединения содержания двух или более отношений используется оператор UNION . Для разделения содержимого одного отношения на несколько отношений используется оператор SPLIT .

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

Pig хранит промежуточные данные, сгенерированные задачами MapReduce во временной директории на файловой системе HDFS. Эта директория должна существовать на кластере HDFS. Её можно сконфигурировать с помощью свойства pig.temp.dir. Значением по умолчанию для этого свойства является "/tmp".

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

Для записи результатов на файловую систему используются оператор STORE и функции загрузка/хранение (PigStorage является функцией хранения по умолчанию). Примечание: Во время тестирования или отладки для просмотра результата в терминале можно использовать оператор DUMP . Но в рабочих условиях для сохранения данных стоит использовать оператор STORE (сравнение операторов: Store vs. Dump).

Apache Pig - это платформа высокого уровня для создания программ, работающих на Apache Hadoop . Язык этой платформы называется Pig Latin . Pig может выполнять свои задания Hadoop в MapReduce , Apache Tez или Apache Spark . Pig Latin абстрагирует программирование от идиомы Java MapReduce до нотации, которая делает программирование MapReduce высоким уровнем, аналогичным уровню SQL для систем управления реляционными базами данных . Pig Latin может быть расширен с помощью пользовательских функций (UDF), которые пользователь может писать на Java, Python , JavaScript , Ruby или Groovy, а затем вызывать непосредственно из языка.

СОДЕРЖАНИЕ

История

Apache Pig был первоначально разработан Yahoo Research примерно в 2006 году для исследователей, чтобы иметь специальный способ создания и выполнения заданий MapReduce для очень больших наборов данных. В 2007 году он был переведен в Apache Software Foundation .

Именование

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

История гласит, что исследователи, работавшие над проектом, первоначально называли его просто «языком». В конце концов им нужно было это как-то назвать. Один из исследователей неожиданно предположил, что это Свинья, и название прижилось. Он необычный, но запоминающийся, и его легко написать по буквам. Хотя некоторые намекнули, что это имя звучит застенчиво или глупо, оно предоставило нам интересную номенклатуру, такую ​​как Pig Latin для языка, Grunt для оболочки и PiggyBank для общего репозитория, подобного CPAN.

- Алан Гейтс, Дэниел Дай, «Что такое свинья?», Programming Pig, 2-е издание (ноябрь 2017 г.)

Пример

Ниже приведен пример программы « Подсчет слов » на языке Pig Latin:

Вышеупомянутая программа будет генерировать параллельные исполняемые задачи, которые могут быть распределены между несколькими машинами в кластере Hadoop для подсчета количества слов в наборе данных, таком как все веб-страницы в Интернете.

Свинья против SQL

По сравнению с SQL, Pig

  1. имеет вложенную реляционную модель,
  2. использует ленивую оценку ,
  3. использует извлечение, преобразование, загрузку (ETL),
  4. может хранить данные в любой момент конвейера ,
  5. объявляет планы выполнения ,
  6. поддерживает разделение конвейеров, что позволяет рабочим процессам проходить по группам DAG вместо строго последовательных конвейеров.

С другой стороны, утверждалось, что СУБД значительно быстрее системы MapReduce после загрузки данных, но загрузка данных в системах баз данных занимает значительно больше времени. Также утверждалось, что РСУБД « из коробки» предлагают поддержку хранения столбцов, работу со сжатыми данными, индексы для эффективного произвольного доступа к данным и отказоустойчивость на уровне транзакций.

Pig Latin является процедурным и очень естественно вписывается в парадигму конвейера, в то время как SQL вместо этого является декларативным . В SQL пользователи могут указать, что данные из двух таблиц должны быть объединены, но не какую реализацию объединения использовать (вы можете указать реализацию JOIN в SQL, таким образом, «. для многих приложений SQL составитель запросов может не иметь достаточных знаний о данные или достаточный опыт для определения подходящего алгоритма соединения. "). Pig Latin позволяет пользователям указывать реализацию или аспекты реализации, которые будут использоваться при выполнении сценария, несколькими способами. По сути, программирование на Pig Latin похоже на определение плана выполнения запроса, что упрощает программистам явное управление потоком их задачи обработки данных.

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

Способность Pig Latin включать пользовательский код в любой момент конвейера полезна для разработки конвейера. Если используется SQL, данные должны быть сначала импортированы в базу данных, а затем может начаться процесс очистки и преобразования.

Читайте также: