Разработчик (и) | 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, а затем вызовите прямо с языка.
Apache Pig изначально был разработан в Yahoo Research примерно в 2006 году для исследователей, чтобы иметь специальный способ создания и выполнения заданий MapReduce для очень больших наборов данных. В 2007 году он был перемещен в Apache Software Foundation.
Версия | Исходная дата выпуска | Последняя версия | Дата выпуска | |
---|---|---|---|---|
Старая версия, нет больше не поддерживается: 0.1 | 2008-09-11 | 0.1.1 | 2008-12-05 | |
Старая версия, больше не поддерживается: 0.2 | 2009-04-08 | 0.2.0 | 2009-04-08 | |
Старая версия, больше не поддерживается: 0.3 | 2009-06-25 | 0.3.0 | 2009-06-25 | |
Старая версия, больше не поддерживается: 0.4 | 2009-08-29 | 0.4.0 | 29.08.2009 | |
Старая версия, больше не поддерживается: 0.5 | 2009-09-29 | 0.5.0 | 2009- 09-29 | |
Старая версия, больше не поддерживается: 0.6 | 2010-03-01 | 0.6.0 | 2010-03-01 | |
Старая версия, больше не поддерживается: 0.7 | 2010-05-13 | 0.7.0 | 2010-05-13 | |
Старая версия, больше не поддерживается: 0.8 | 17.12.2010 | 0.8.1 | 2011-04-24 | |
Старая версия, больше не поддерживается: 0.9 | 2011-07- 29 | 0.9.2 | 2012-01-22 | |
Старая версия, больше не поддерживается: 0.10 | 2012-01-22 | 0.10.1 | 2012-04-25 | |
Старая версия, больше не поддерживается: 0.11 | 21.02.2013 | 0.11.1 | 2013-04-01 | |
Старая версия, больше не поддерживается : 0.12 | 2013-10-14 | 0.12.1 | 2014-04-14 | |
Старая версия, больше не поддерживается: 0.13 | 2014-07-04 | 0,13.0 | 2014-07-04 | |
Старая версия, больше не поддерживается: 0,14 | 2014-11-20 | 0.14.0 | 2014-11-20 | |
Старая версия, больше не поддерживается: 0.15 | 2015-06-06 | 0,15.0 | 06.06.2015 | |
Старая версия, больше не поддерживается: 0.16 | 2016-06-08 | 0.16.0 | 2016-06- 08 | |
Текущая стабильная версия: 0,17 | 19.06.2017 | 0,17.0 | 19.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 для подсчета количества слов в наборе данных, таком как все веб-страницы в Интернете.
По сравнению с SQL, Pig
С другой стороны, утверждалось, что СУБД значительно быстрее, чем система MapReduce после загрузки данных, но это загрузка данных в системы баз данных занимает значительно больше времени. Также утверждалось, что СУБД предлагают "из коробки" поддержку хранения столбцов, работу со сжатыми данными, индексы для эффективного произвольного доступа к данным и отказоустойчивость на уровне транзакций.
Pig Latin является процедурным и очень естественно вписывается в парадигму конвейера, тогда как SQL вместо этого является декларативным. В SQL пользователи могут указать, что данные из двух таблиц должны быть объединены, но не какую реализацию объединения использовать (вы можете указать реализацию JOIN в SQL, таким образом, «... для многих приложений SQL составитель запросов может не иметь достаточных знаний о данные или достаточный опыт, чтобы определить подходящий алгоритм соединения. "). Pig Latin позволяет пользователям указывать реализацию или аспекты реализации, которые будут использоваться при выполнении сценария, несколькими способами. По сути, программирование на Pig Latin похоже на определение плана выполнения запроса, что упрощает для программистов явное управление потоком их задачи обработки данных.
SQL ориентирован на запросы, которые производят единственный результат. SQL обрабатывает деревья естественным образом, но не имеет встроенного механизма для разделения потока обработки данных и применения различных операторов к каждому подпотоку. Скрипт Pig Latin описывает направленный ациклический граф (DAG), а не конвейер.
Способность Pig Latin включать пользовательский код в любой момент конвейера полезна для разработки конвейера. Если используется SQL, данные должны быть сначала импортированы в базу данных, а затем может начаться процесс очистки и преобразования.