Apache Pig

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

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, а затем вызовите прямо с языка.

Содержание
  • 1 История
  • 2 Пример
  • 3 Свинья против SQL
  • 4 См. Также
  • 5 Ссылки
  • 6 Внешние ссылки
История

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

ВерсияИсходная дата выпускаПоследняя версияДата выпуска
Старая версия, нет больше не поддерживается: 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.029.08.2009
Старая версия, больше не поддерживается: 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.817.12.20100.8.12011-04-24
Старая версия, больше не поддерживается: 0.92011-07- 290.9.22012-01-22
Старая версия, больше не поддерживается: 0.102012-01-220.10.12012-04-25
Старая версия, больше не поддерживается: 0.1121.02.20130.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.006.06.2015
Старая версия, больше не поддерживается: 0.162016-06-080.16.02016-06- 08
Текущая стабильная версия: 0,1719.06.20170,17.019.06.2017
Условные обозначения: Старая версия Старая версия, все еще поддерживается Последняя версия Последняя предварительная версия Будущий выпуск
Пример

Ниже приведен пример «Word Count "программа i n Свинья латиница:

input_lines = LOAD '/ tmp / my-copy-of-all-pages-on-internet' AS (строка: chararray); - Извлеките слова из каждой строки и поместите их в мешок для свиней - тип данных, затем сплющите сумку, чтобы получить по одному слову в каждой строке words = FOREACH input_lines GENERATE FLATTEN (TOKENIZE (line)) AS word; - отфильтровать любые слова, которые являются просто пробелами filter_words = ФИЛЬТР слов ПО СООТВЕТСТВУЮЩИМ '\\ w +'; - создать группу для каждого слова word_groups = GROUP filter_words BY word; - подсчитать записи в каждой группе word_count = FOREACH word_groups GENERATE COUNT (filter_words) AS count, group AS word; - упорядочить записи по счетчику order_word_count = ORDER word_count BY count DESC; СОХРАНИТЬ заказанное_счет_слова В '/ tmp / количество-слов-в-Интернете';

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

Pig vs SQL

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

  1. имеет вложенную реляционную модель,
  2. использует ленивую оценку,,
  3. использует extract, преобразование, загрузка (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, данные должны быть сначала импортированы в базу данных, а затем может начаться процесс очистки и преобразования.

См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-11 20:10:58
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте