Apache Pig - Apache Pig
Vývojáři | Softwarová nadace Apache, Yahoo Research |
---|---|
První vydání | 11. září 2008 |
Stabilní uvolnění | 0.17.0 / 19. června 2017 |
Úložiště | |
Operační systém | Microsoft Windows, OS X, Linux |
Typ | Analýza dat |
Licence | Licence Apache 2.0 |
webová stránka | prase |
Apache Pig[1]je platforma na vysoké úrovni pro vytváření programů, na kterých běží Apache Hadoop. Jazyk této platformy se nazývá Prasečí latina.[1] Pig může provádět své úlohy Hadoop v MapReduce, Apache Tez nebo Apache Spark.[2] Pig Latin abstrahuje programování od Jáva MapReduce idiom do notace, díky níž je programování MapReduce na vysoké úrovni, podobné tomu z SQL pro systémy pro správu relačních databází. Prasečí latinu lze rozšířit pomocí uživatelem definované funkce (UDF), které může uživatel psát v Javě, Krajta, JavaScript, Rubín nebo Báječný[3] a poté zavolat přímo z jazyka.
Dějiny
Apache Pig byl původně[4] vyvinut v Yahoo Research kolem roku 2006, aby výzkumní pracovníci měli ad hoc způsob vytváření a provádění úloh MapReduce na velmi velkých souborech dat. V roce 2007[5] bylo přesunuto do Softwarová nadace Apache.
Verze | Původní datum vydání | Nejnovější verze | Datum vydání[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 | |
Legenda: Stará verze Starší verze, stále udržovaná Nejnovější verze Nejnovější verze náhledu |
Příklad
Níže je uveden příklad „Počet slov "program v prasečí latině:
input_lines = ZATÍŽENÍ „/ tmp / moje kopie všech stránek na internetu“ TAK JAKO (čára:chararray); - Extrahujte slova z každého řádku a vložte je do pytle s prasaty - datový typ, poté vyrovnejte tašku, abyste získali jedno slovo v každém řádku slova = PRO KAŽDÉHO input_lines GENEROVAT FLATTEN(TOKENIZUJTE(čára)) TAK JAKO slovo; - odfiltrovat všechna slova, která jsou pouze mezerami filtrovaný_slov = FILTR slova PODLE slovo ZÁPASY ' w +'; - vytvořit skupinu pro každé slovo word_groups = SKUPINA filtrovaný_slov PODLE slovo; - spočítat položky v každé skupině počet slov = PRO KAŽDÉHO word_groups GENEROVAT POČET(filtrovaný_slov) TAK JAKO počet, skupina TAK JAKO slovo; - objednat záznamy podle počtu ordered_word_count = OBJEDNAT počet slov PODLE počet POP; OBCHOD ordered_word_count DO „/ tmp / počet slov na internetu“;
Výše uvedený program vygeneruje paralelní spustitelné úlohy, které lze distribuovat na více počítačů v clusteru Hadoop a spočítat počet slov v datové sadě, jako jsou všechny webové stránky na internetu.
Prase vs SQL
Ve srovnání s SQL, Pig
- má vnořený relační model,
- používá líné hodnocení,
- používá extrahovat, transformovat, načíst (ETL),
- je schopen ukládat data kdykoli během a potrubí,
- prohlašuje prováděcí plány,
- podporuje rozdělení potrubí, což umožňuje pokračovat v pracovních postupech DAG místo přísně sekvenčních potrubí.
Na druhé straně to bylo argumentováno DBMS jsou podstatně rychlejší než systém MapReduce po načtení dat, ale načítání dat trvá v databázových systémech podstatně déle. Bylo také argumentováno RDBMS nabídka okamžité podpory úložiště sloupců, práce s komprimovanými daty, indexy pro efektivní náhodný přístup k datům a odolnost proti chybám na úrovni transakcí[7]
Prasečí latina je procesní a velmi přirozeně zapadá do paradigmatu pipeline, zatímco SQL je místo toho deklarativní. V SQL mohou uživatelé specifikovat, že data ze dvou tabulek musí být spojena, ale ne to, co použít implementaci spojení (Můžete určit implementaci JOIN v SQL, tedy „... pro mnoho aplikací SQL nemusí spisovatel dotazů mít dostatečné znalosti údaje nebo dostatečné odborné znalosti k určení vhodného algoritmu spojení. "). Pig Latin umožňuje uživatelům určit implementaci nebo aspekty implementace, které mají být použity při provádění skriptu několika způsoby.[8] Programování Pig Latin je ve skutečnosti podobné specifikaci plánu provádění dotazu, což programátorům usnadňuje výslovnou kontrolu toku jejich úlohy zpracování dat.[9]
SQL je orientován na dotazy, které produkují jediný výsledek. SQL zpracovává stromy přirozeně, ale nemá zabudovaný mechanismus pro rozdělení proudu zpracování dat a použití různých operátorů na každý dílčí proud. Prasečí latinka popisuje a směrovaný acyklický graf (DAG) spíše než potrubí.[8]
Schopnost Pig Latin zahrnout uživatelský kód v libovolném bodě kanálu je užitečná pro vývoj kanálu. Pokud se používá SQL, je třeba nejprve importovat data do databáze a poté může začít proces čištění a transformace.[8]
Viz také
- Apache Hive
- Sawzall - podobný nástroj od Google
Reference
- ^ A b „Hadoop: Apache Pig“. Citováno 2. září 2011.
- ^ „[PIG-4167] Počáteční implementace Pig on Spark - ASF JIRA“. issues.apache.org. Citováno 2018-12-29.
- ^ "Prase uživatelem definované funkce". Citováno 3. května 2013.
- ^ „Yahoo Blog: Pig - Cesta k efektivnímu jazyku na vysoké úrovni pro Hadoop“. Archivovány od originál 3. února 2016. Citováno 23. května 2015.
- ^ „Prase do inkubace v Apache Software Foundation“. Archivovány od originál 3. února 2016. Citováno 23. května 2015.
- ^ „Vydání Apache Pig“. Apache. Citováno 2019-03-13.
- ^ „Komunikace ACM: MapReduce a Parallel DBMS: Přátelé nebo nepřátelé?“ (PDF). Archivovány od originál (PDF) 1. července 2015. Citováno 23. května 2015.
- ^ A b C „Yahoo Pig Development Team: Comparing Pig Latin and SQL for Constructing Data Processing Pipelines“. Archivovány od originál dne 30. května 2015. Citováno 23. května 2015.
- ^ „ACM SigMod 08: Pig Latin: nepříliš cizí jazyk pro zpracování dat“ (PDF). Citováno 23. května 2015.