Апачская свинья - Apache Pig
Разработчики) | Фонд программного обеспечения Apache, Yahoo Research |
---|---|
изначальный выпуск | 11 сентября 2008 г. |
Стабильный выпуск | 0.17.0 / 19 июня 2017 г. |
Репозиторий | |
Операционная система | Майкрософт Виндоус, OS X, Linux |
Тип | Аналитика данных |
Лицензия | Лицензия Apache 2.0 |
Интернет сайт | свинья |
Апачская свинья[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.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 | 2009-08-29 | |
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 | 2010-12-17 | 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 | 2013-02-21 | 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 | 2015-06-06 | |
0.16 | 2016-06-08 | 0.16.0 | 2016-06-08 | |
0.17 | 2017-06-19 | 0.17.0 | 2017-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
- имеет вложенную реляционную модель,
- использует ленивая оценка,
- использует извлечь, преобразовать, загрузить (ETL),
- может хранить данные в любой момент во время трубопровод,
- заявляет планы исполнения,
- поддерживает разделение конвейеров, что позволяет рабочим процессам продолжаться Группы DAG вместо строго последовательных конвейеров.
С другой стороны, утверждалось СУБД значительно быстрее, чем система MapReduce после загрузки данных, но загрузка данных в системах баз данных занимает значительно больше времени. Также утверждалось СУБД предлагают готовую поддержку хранения столбцов, работу со сжатыми данными, индексы для эффективного произвольного доступа к данным и отказоустойчивость на уровне транзакций.[7]
Свинья на латыни процедурный и очень естественно вписывается в парадигму конвейера, в то время как SQL вместо этого декларативный. В SQL пользователи могут указать, что данные из двух таблиц должны быть объединены, но не то, какую реализацию объединения использовать (вы можете указать реализацию JOIN в SQL, таким образом, «... для многих приложений SQL составитель запросов может не иметь достаточных знаний о данные или достаточный опыт для определения подходящего алгоритма соединения. "). Pig Latin позволяет пользователям указывать реализацию или аспекты реализации, которые будут использоваться при выполнении сценария, несколькими способами.[8] По сути, программирование на Pig Latin похоже на определение плана выполнения запроса, что упрощает для программистов явное управление потоком их задачи обработки данных.[9]
SQL ориентирован на запросы, дающие один результат. SQL обрабатывает деревья естественным образом, но не имеет встроенного механизма для разделения потока обработки данных и применения разных операторов к каждому подпотоку. Свинья латиница описывает ориентированный ациклический граф (DAG), а не конвейер.[8]
Возможность Pig Latin включать пользовательский код в любой момент конвейера полезна для разработки конвейера. Если используется SQL, данные должны быть сначала импортированы в базу данных, а затем может начаться процесс очистки и преобразования.[8]
Смотрите также
- Apache Hive
- Sawzall - аналогичный инструмент от Google
Рекомендации
- ^ а б "Hadoop: Apache Pig". Получено 2 сен, 2011.
- ^ "[PIG-4167] Начальная реализация Pig on Spark - ASF JIRA". issues.apache.org. Получено 2018-12-29.
- ^ "Пользовательские функции Pig". Получено 3 мая, 2013.
- ^ «Блог Yahoo: Pig - путь к эффективному языку высокого уровня для Hadoop». Архивировано из оригинал 3 февраля 2016 г.. Получено 23 мая, 2015.
- ^ «Свинья в инкубацию в Apache Software Foundation». Архивировано из оригинал 3 февраля 2016 г.. Получено 23 мая, 2015.
- ^ «Релизы Apache Pig». Apache. Получено 2019-03-13.
- ^ «Связь ACM: MapReduce и параллельные СУБД: друзья или враги?» (PDF). Архивировано из оригинал (PDF) 1 июля 2015 г.. Получено 23 мая, 2015.
- ^ а б c «Команда разработчиков Yahoo Pig: сравнение Pig Latin и SQL для построения конвейеров обработки данных». Архивировано из оригинал 30 мая 2015 г.. Получено 23 мая, 2015.
- ^ «ACM SigMod 08: Pig Latin: не очень иностранный язык для обработки данных» (PDF). Получено 23 мая, 2015.