Апачская свинья - Apache Pig

Апачская свинья
Логотип Apache Pig
Разработчики)Фонд программного обеспечения Apache, Yahoo Research
изначальный выпуск11 сентября 2008 г.; 12 лет назад (2008-09-11)
Стабильный выпуск
0.17.0 / 19 июня 2017 г.; 3 года назад (2017-06-19)
Репозиторий Отредактируйте это в Викиданных
Операционная системаМайкрософт Виндоус, OS X, Linux
ТипАналитика данных
ЛицензияЛицензия Apache 2.0
Интернет сайтсвинья.apache.org

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

История

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

ВерсияИсходная дата выпускаПоследняя версияДата выхода[6]
Старая версия, больше не поддерживается: 0.12008-09-110.1.12008-12-05
Старая версия, больше не поддерживается: 0.22009-04-080.2.02009-04-08
Старая версия, больше не поддерживается: 0.32009-06-250.3.02009-06-25
Старая версия, больше не поддерживается: 0.42009-08-290.4.02009-08-29
Старая версия, больше не поддерживается: 0.52009-09-290.5.02009-09-29
Старая версия, больше не поддерживается: 0.62010-03-010.6.02010-03-01
Старая версия, больше не поддерживается: 0.72010-05-130.7.02010-05-13
Старая версия, больше не поддерживается: 0.82010-12-170.8.12011-04-24
Старая версия, больше не поддерживается: 0.92011-07-290.9.22012-01-22
Старая версия, больше не поддерживается: 0.102012-01-220.10.12012-04-25
Старая версия, больше не поддерживается: 0.112013-02-210.11.12013-04-01
Старая версия, больше не поддерживается: 0.122013-10-140.12.12014-04-14
Старая версия, больше не поддерживается: 0.132014-07-040.13.02014-07-04
Старая версия, больше не поддерживается: 0.142014-11-200.14.02014-11-20
Старая версия, больше не поддерживается: 0.152015-06-060.15.02015-06-06
Старая версия, больше не поддерживается: 0.162016-06-080.16.02016-06-08
Текущая стабильная версия: 0.172017-06-190.17.02017-06-19
Легенда:
Старая версия
Старая версия, все еще поддерживается
Последняя версия
Последняя предварительная версия
Будущий выпуск

Пример

Ниже приведен пример "Количество слов "программа на Свиной латыни:

 input_lines = НАГРУЗКА '/ tmp / моя-копия-всех-страниц-в Интернете' В КАЧЕСТВЕ (линия:Chararray);  - Извлеките слова из каждой строки и положите их в мешок для свиней - тип данных, затем сплющите сумку, чтобы в каждой строке было по одному слову слова = ДЛЯ КАЖДОГО input_lines СОЗДАТЬ ПЛОСКИЙ(ТОКЕНИЗАЦИЯ(линия)) В КАЧЕСТВЕ слово; - отфильтровать любые слова, которые являются просто пробелами filter_words = ФИЛЬТР слова К слово СОВПАДЕНИЯ ' w +';  - создать группу для каждого слова word_groups = ГРУППА filter_words К слово; - посчитать записи в каждой группе word_count = ДЛЯ КАЖДОГО word_groups СОЗДАТЬ СЧИТАТЬ(filter_words) В КАЧЕСТВЕ считать, группа В КАЧЕСТВЕ слово; - упорядочить записи по количеству заказанное_слово_count = ПОРЯДОК word_count К считать DESC; ХРАНИТЬ заказанное_слово_count В '/ tmp / количество-слов-в-Интернете';

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

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

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

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

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

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

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

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

Смотрите также

Рекомендации

  1. ^ а б "Hadoop: Apache Pig". Получено 2 сен, 2011.
  2. ^ "[PIG-4167] Начальная реализация Pig on Spark - ASF JIRA". issues.apache.org. Получено 2018-12-29.
  3. ^ "Пользовательские функции Pig". Получено 3 мая, 2013.
  4. ^ «Блог Yahoo: Pig - путь к эффективному языку высокого уровня для Hadoop». Архивировано из оригинал 3 февраля 2016 г.. Получено 23 мая, 2015.
  5. ^ «Свинья в инкубацию в Apache Software Foundation». Архивировано из оригинал 3 февраля 2016 г.. Получено 23 мая, 2015.
  6. ^ «Релизы Apache Pig». Apache. Получено 2019-03-13.
  7. ^ «Связь ACM: MapReduce и параллельные СУБД: друзья или враги?» (PDF). Архивировано из оригинал (PDF) 1 июля 2015 г.. Получено 23 мая, 2015.
  8. ^ а б c «Команда разработчиков Yahoo Pig: сравнение Pig Latin и SQL для построения конвейеров обработки данных». Архивировано из оригинал 30 мая 2015 г.. Получено 23 мая, 2015.
  9. ^ «ACM SigMod 08: Pig Latin: не очень иностранный язык для обработки данных» (PDF). Получено 23 мая, 2015.

внешняя ссылка