Prase Apache - Apache Pig
| Vývojáři | Apache Software Foundation , 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 je platforma na vysoké úrovni pro vytváření programů, které běží na Apache Hadoop . Jazyk pro tuto platformu se nazývá prasečí latina . Pig může provádět své úlohy Hadoop v MapReduce , Apache Tez nebo Apache Spark . Pig Latin abstrahuje programování z Java MapReduce idiomu do notace, díky níž je programování MapReduce na vysoké úrovni, podobné jako u SQL pro systémy pro správu relačních databází . Pig Latin lze rozšířit pomocí uživatelsky definovaných funkcí (UDF), které může uživatel psát v jazycích Java, Python , JavaScript , Ruby nebo Groovy a poté volat přímo z jazyka.
Dějiny
Apache Pig byl původně vyvinut ve společnosti Yahoo Research kolem roku 2006, aby výzkumníci měli ad hoc způsob vytváření a spouštění úloh MapReduce na velmi velkých datových sadách. V roce 2007 byl přesunut do Apache Software Foundation .
| Verze | Původní datum vydání | Nejnovější verze | Datum vydání | |
|---|---|---|---|---|
| 0,1 | 11. září 2008 | 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 | 13. 5. 2010 | 0,7,0 | 13. 5. 2010 | |
| 0,8 | 17. 12. 2010 | 0,8,1 | 24. dubna 2011 | |
| 0,9 | 29. července 2011 | 0,9,2 | 22. 1. 2012 | |
| 0,10 | 22. 1. 2012 | 0.10.1 | 25. dubna 2012 | |
| 0,11 | 21. února 2013 | 0.11.1 | 01.04.2013 | |
| 0,12 | 14. 10. 2013 | 0.12.1 | 14. dubna 2014 | |
| 0,13 | 2014-07-04 | 0,13,0 | 2014-07-04 | |
| 0,14 | 20. 11. 2014 | 0,14,0 | 20. 11. 2014 | |
| 0,15 | 2015-06-06 | 0,15,0 | 2015-06-06 | |
| 0,16 | 2016-06-08 | 0,16,0 | 2016-06-08 | |
| 0,17 | 19. 06. 2017 | 0,17,0 | 19. 06. 2017 | |
|
Legenda:
Stará verze
Starší verze, stále udržovaná
Nejnovější verze
Nejnovější verze náhledu
|
||||
Pojmenování
Pokud jde o pojmenování programovacího jazyka Pig, název byl vybrán libovolně a zasekl se, protože byl zapamatovatelný, snadno hláskovatelný a pro novost.
Příběh říká, že vědci pracující na projektu jej původně označovali jednoduše jako 'jazyk'. Nakonec tomu museli nějak říkat. Jeden výzkumník z temene hlavy navrhl Pig a jméno zůstalo. Je to zvláštní, ale nezapomenutelné a snadno se to píše. Zatímco někteří naznačili, že název zní bláznivě nebo hloupě, poskytl nám zábavnou nomenklaturu, jako je Pig Latin pro jazyk, Grunt pro shell a PiggyBank pro sdílené úložiště podobné CPAN.
- Alan Gates, Daniel Dai, „What Is Pig?“, Programming Pig, 2. vydání (listopad 2017)
Příklad
Níže je uveden příklad programu „ Počet slov “ v prasečí latině:
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';
Výše uvedený program vygeneruje paralelní spustitelné úlohy, které lze distribuovat na více počítačů v clusteru Hadoop a počí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á výpis, transformaci, načtení (ETL),
- je schopen ukládat data v libovolném bodě během potrubí ,
- vyhlašuje prováděcí plány ,
- podporuje rozdělení potrubí, což umožňuje, aby pracovní toky pokračovaly po DAG namísto přísně sekvenčních potrubí.
Na druhé straně se tvrdilo, že DBMS jsou po načtení dat podstatně rychlejší než systém MapReduce, ale že načítání dat v databázových systémech trvá podstatně déle. Rovněž se tvrdilo, že nabídka RDBMS nabízí podporu úložiště sloupců, práci s komprimovanými daty, indexy pro efektivní náhodný přístup k datům a toleranci chyb na úrovni transakcí.
Pig Latin je procedurální a velmi přirozeně zapadá do paradigmatu potrubí, zatímco SQL je místo toho deklarativní . V SQL uživatelé mohou určit, že data ze dvou tabulek musí být spojena, ale ne jakou spojovací implementaci použít (Můžete zadat implementaci JOIN v SQL, tedy „... pro mnoho aplikací SQL nemusí mít zapisovač dotazů dostatečné znalosti o data nebo dostatek odborných znalostí k určení vhodného spojovacího algoritmu. “). Pig Latin umožňuje uživatelům určit implementaci nebo aspekty implementace, které mají být použity při spouštění skriptu, několika způsoby. Ve skutečnosti je programování Pig Latin podobné zadávání plánu spouštění dotazů, což programátorům usnadňuje explicitní řízení toku jejich úlohy zpracování dat.
SQL je orientován kolem dotazů, které produkují jeden výsledek. SQL zpracovává stromy přirozeně, ale nemá žádný vestavěný mechanismus pro rozdělení proudu zpracování dat a použití různých operátorů na každý dílčí proud. Prasečí latinský skript popisuje spíše směrovaný acyklický graf (DAG) než potrubí.
Schopnost Pig Latin zahrnout uživatelský kód do kteréhokoli bodu potrubí je užitečná pro vývoj potrubí. Pokud se používá SQL, musí být data nejprve importována do databáze a poté může začít proces čištění a transformace.