Jump to content

Апачская свинья

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

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

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

Версия Исходная дата выпуска Последняя версия Дата выпуска [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
Легенда:
Старая версия
Старая версия, все еще поддерживается
Последняя версия
Последняя предварительная версия
Future release

Что касается названия языка программирования Pig, то оно было выбрано произвольно и прижилось, поскольку оно было запоминающимся, легко писалось и было новизной. [7] [8] [9]

История гласит, что исследователи, работавшие над проектом, первоначально называли его просто «языком». В конце концов им нужно было как-то это назвать. Один исследователь сразу же предположил «Свинья», и это название прижилось. Оно необычное, но запоминающееся и легко пишется. Хотя некоторые намекнули, что это название звучит застенчиво или глупо, оно предоставило нам интересную номенклатуру, такую ​​как Pig Latin для языка, Grunt для оболочки и PiggyBank для общего репозитория, подобного CPAN.

- Алан Гейтс, Дэниел Дай, «Что такое свинья?», Programming Pig, 2-е издание (ноябрь 2017 г.)

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

 input_lines = LOAD '/tmp/my-copy-of-all-pages-on-internet' AS (line:chararray);  -- Extract words from each line and put them into a pig bag -- datatype, then flatten the bag to get one word on each row words = FOREACH input_lines GENERATE FLATTEN(TOKENIZE(line)) AS word;  -- filter out any words that are just white spaces filtered_words = FILTER words BY word MATCHES '\\w+';  -- create a group for each word word_groups = GROUP filtered_words BY word;  -- count the entries in each group word_count = FOREACH word_groups GENERATE COUNT(filtered_words) AS count, group AS word;  -- order the records by count ordered_word_count = ORDER word_count BY count DESC; STORE ordered_word_count INTO '/tmp/number-of-words-on-internet';

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

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

[ редактировать ]

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

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

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

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

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

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

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б «Hadoop: Apache Pig» . Проверено 2 сентября 2011 г.
  2. ^ «[PIG-4167] Первоначальная реализация Pig on Spark — ASF JIRA» . Issues.apache.org . Проверено 29 декабря 2018 г.
  3. ^ «Пользовательские функции Pig» . Проверено 3 мая 2013 г.
  4. ^ «Блог Yahoo: Pig — путь к эффективному языку высокого уровня для Hadoop» . Архивировано из оригинала 3 февраля 2016 года . Проверено 23 мая 2015 г.
  5. ^ «Свинья в инкубаторе Apache Software Foundation» . Архивировано из оригинала 3 февраля 2016 года . Проверено 23 мая 2015 г.
  6. ^ «Релизы Apache Pig» . Апач . Проверено 13 марта 2019 г.
  7. ^ «1. Что такое свинья? - Программирование свиньи, 2-е издание [Книга]» . www.oreilly.com . Проверено 1 августа 2021 г.
  8. ^ Гейтс, Алан (2016). Программирующая свинья . Дэниел Дай (Второе изд.). Севастополь, Калифорния. ISBN  978-1-4919-3706-8 . OCLC   964523786 . {{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  9. ^ Гейтс, Алан (27 июля 2021 г.). «Вопросы о талисмане свиньи» . Список рассылки пользователей Pig (список рассылки). Архивировано из оригинала 1 августа 2021 года . Проверено 1 августа 2021 г.
  10. ^ «Коммуникации ACM: MapReduce и параллельные СУБД: друзья или враги?» (PDF) . Архивировано из оригинала (PDF) 1 июля 2015 года . Проверено 23 мая 2015 г.
  11. ^ Перейти обратно: а б с «Команда разработчиков Yahoo Pig: сравнение Pig Latin и SQL для построения конвейеров обработки данных» . Архивировано из оригинала 30 мая 2015 года . Проверено 23 мая 2015 г.
  12. ^ «ACM SigMod 08: Свиная латынь: не совсем иностранный язык для обработки данных» (PDF) . Проверено 23 мая 2015 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f108348fbb69ddede63343b02bf47907__1657900260
URL1:https://arc.ask3.ru/arc/aa/f1/07/f108348fbb69ddede63343b02bf47907.html
Заголовок, (Title) документа по адресу, URL1:
Apache Pig - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)