Apache Pig - Обзор
Что такое Apache Pig?
Apache Pig - это абстракция над MapReduce. Это инструмент / платформа, которая используется для анализа больших наборов данных, представляющих их в виде потоков данных. Свинью обычно используют сHadoop; мы можем выполнять все операции с данными в Hadoop с помощью Apache Pig.
Для написания программ анализа данных Pig предоставляет язык высокого уровня, известный как Pig Latin. Этот язык предоставляет различные операторы, с помощью которых программисты могут разрабатывать свои собственные функции для чтения, записи и обработки данных.
Для анализа данных с помощью Apache Pig, программистам необходимо писать скрипты на языке Pig Latin. Все эти скрипты внутренне конвертируются в задачи Map и Reduce. Apache Pig имеет компонент, известный какPig Engine который принимает сценарии Pig Latin в качестве входных данных и преобразует эти сценарии в задания MapReduce.
Зачем нам Apache Pig?
Программисты, не очень разбирающиеся в Java, обычно испытывали трудности при работе с Hadoop, особенно при выполнении любых задач MapReduce. Apache Pig - находка для всех таких программистов.
С помощью Pig Latinпрограммисты могут легко выполнять задачи MapReduce, не набирая сложные коды на Java.
Apache Pig использует multi-query approach, тем самым уменьшая длину кодов. Например, операцию, которая потребует от вас ввести 200 строк кода (LoC) на Java, можно легко выполнить, набрав всего 10 строк кода в Apache Pig. В конечном итоге Apache Pig сокращает время разработки почти в 16 раз.
Свинья на латыни SQL-like language и выучить Apache Pig легко, если вы знакомы с SQL.
Apache Pig предоставляет множество встроенных операторов для поддержки операций с данными, таких как объединения, фильтры, упорядочение и т. Д. Кроме того, он также предоставляет вложенные типы данных, такие как кортежи, пакеты и карты, которые отсутствуют в MapReduce.
Особенности Свиньи
Apache Pig имеет следующие функции -
Rich set of operators - Он предоставляет множество операторов для выполнения таких операций, как соединение, сортировка, фильтрация и т. Д.
Ease of programming - Pig Latin похож на SQL, и если вы хорошо разбираетесь в SQL, написать сценарий Pig несложно.
Optimization opportunities - Задачи в Apache Pig автоматически оптимизируют свое выполнение, поэтому программистам нужно сосредоточиться только на семантике языка.
Extensibility - Используя существующие операторы, пользователи могут разрабатывать свои собственные функции для чтения, обработки и записи данных.
UDF’s - Свинья дает возможность создавать User-defined Functions на других языках программирования, таких как Java, и вызывать или встраивать их в Pig Scripts.
Handles all kinds of data- Apache Pig анализирует все виды данных, как структурированные, так и неструктурированные. Он сохраняет результаты в HDFS.
Apache Pig против MapReduce
Ниже перечислены основные различия между Apache Pig и MapReduce.
Апачская свинья | Уменьшение карты |
---|---|
Apache Pig - это язык потока данных. | MapReduce - это парадигма обработки данных. |
Это язык высокого уровня. | MapReduce низкоуровневый и жесткий. |
Выполнить операцию соединения в Apache Pig довольно просто. | В MapReduce довольно сложно выполнить операцию соединения между наборами данных. |
Любой начинающий программист с базовыми знаниями SQL может удобно работать с Apache Pig. | Для работы с MapReduce необходимо знакомство с Java. |
Apache Pig использует подход с несколькими запросами, что значительно сокращает длину кодов. | MapReduce потребует почти в 20 раз больше строк для выполнения той же задачи. |
Нет необходимости в компиляции. При выполнении каждый оператор Apache Pig внутренне преобразуется в задание MapReduce. | Задания MapReduce требуют длительного процесса компиляции. |
Apache Pig против SQL
Ниже перечислены основные различия между Apache Pig и SQL.
Свинья | SQL |
---|---|
Свинья на латыни procedural язык. | SQL - это declarative язык. |
В Apache Pig, schemaне является обязательным. Мы можем хранить данные, не создавая схемы (значения сохраняются как $ 01, $ 02 и т. Д.) | Схема является обязательной в SQL. |
Модель данных в Apache Pig: nested relational. | Модель данных, используемая в SQL is flat relational. |
Apache Pig предоставляет ограниченные возможности для Query optimization. | В SQL больше возможностей для оптимизации запросов. |
В дополнение к указанным выше различиям, Apache Pig Latin -
- Позволяет разделить трубопровод.
- Позволяет разработчикам хранить данные в любом месте конвейера.
- Объявляет планы выполнения.
- Предоставляет операторы для выполнения функций ETL (извлечение, преобразование и загрузка).
Apache Pig против Hive
И Apache Pig, и Hive используются для создания заданий MapReduce. А в некоторых случаях Hive работает с HDFS аналогично Apache Pig. В следующей таблице мы перечислили несколько важных моментов, которые отличают Apache Pig от Hive.
Апачская свинья | Улей |
---|---|
Apache Pig использует язык под названием Pig Latin. Первоначально он был создан вYahoo. | Hive использует язык под названием HiveQL. Первоначально он был создан вFacebook. |
Pig Latin - это язык потока данных. | HiveQL - это язык обработки запросов. |
Свинья-латынь - это процедурный язык, который вписывается в парадигму конвейера. | HiveQL - декларативный язык. |
Apache Pig может обрабатывать структурированные, неструктурированные и частично структурированные данные. | Hive в основном предназначен для структурированных данных. |
Приложения Apache Pig
Apache Pig обычно используется специалистами по обработке данных для выполнения задач, включающих специальную обработку и быстрое прототипирование. Используется Apache Pig -
- Для обработки огромных источников данных, таких как веб-журналы.
- Выполнять обработку данных для поисковых платформ.
- Для обработки загрузки данных, чувствительных ко времени.
Apache Pig - История
В 2006, Apache Pig был разработан в Yahoo в качестве исследовательского проекта, в частности, для создания и выполнения заданий MapReduce для каждого набора данных. В2007, Исходный код Apache Pig был открыт через инкубатор Apache. В2008, вышел первый выпуск Apache Pig. В2010, Apache Pig завершился как проект верхнего уровня Apache.