Porc Apache

Porc Apache

informație
Dezvoltat de Apache Software Foundation
Prima versiune 11 septembrie 2008
Ultima versiune 0.17.0 (19 iunie 2017)
Depozit svn.apache.org/repos/asf/pig
Starea proiectului în dezvoltare
Scris in Java
Sistem de operare Microsoft Windows , macOS și Linux
Mediu inconjurator Mașină virtuală Java
Licență Licență Apache
Site-ul web https://pig.apache.org/

Pig este o platformă de nivel înalt pentru crearea programelor MapReduce utilizate cu Hadoop . Limba acestei platforme se numește Latin latin . Rezumatele Pig Latin din limbajul de programare Java MapReduce și se mută la un nivel mai ridicat de abstractizare, similar cu cel al SQL pentru sistemele RDBMS. Pig Latin poate fi extins folosind UDF (User Defined Functions) pe care utilizatorul îl poate scrie în Java , Python , JavaScript , Ruby sau Groovy și apoi poate fi utilizat direct în limbă.

Pig a fost dezvoltat inițial la Yahoo Research în anii 2006 pentru cercetătorii care doreau o soluție ad-hoc pentru a crea și a executa locuri de muncă de reducere a hărților pe seturi de date mari. În 2007, a fost transmis Apache Software Foundation .

Exemplu

Iată un exemplu de program „ Număr de cuvinte ” în Pig 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';

Programul de mai sus va genera sarcini executabile paralele care pot fi distribuite pe mai multe mașini dintr-un cluster Hadoop pentru a număra numărul de cuvinte dintr-un set de date, cum ar fi paginile web de pe Internet.

Porc vs SQL

Comparativ cu SQL, Pig:

  1. Folosiți o evaluare leneșă ,
  2. folosește extract, transformare, încărcare (ETL),
  3. este capabil să stocheze date în orice moment în timpul unei conducte ,
  4. declară planul de execuție ,
  5. execută fluxul de lucru subdivizat conform unui grafic, în loc de o execuție pur secvențială.

În schimb, SGBD-urile sunt semnificativ mai rapide decât sistemul MapReduce odată ce datele sunt încărcate, această încărcare a datelor fiind mult mai rapidă într-un sistem MapReduce. Și sistemele de baze de date relaționale asigură stocarea coloanelor, cutii de date comprimate, indexare pentru localizarea mai rapidă a datelor și toleranță la erori la nivel de tranzacție .

Latinul porc este un limbaj procedural și se încadrează în mod natural în paradigma conductei, în timp ce SQL este mai degrabă declarativ. În SQL, utilizatorii pot specifica faptul că datele din două tabele ar trebui să fie îmbinate, dar nu care implementare de îmbinare să fie utilizate și "... pentru multe aplicații, motorul de interogare nu are cunoștințe suficiente despre date sau o experiență suficientă pentru a specifica o îmbinare adecvată algoritm. ". Pig Latin permite utilizatorilor să specifice o implementare sau aspecte ale implementării pe care să le folosească în executarea unui script în mai multe moduri. Acest lucru se datorează faptului că programarea Pig Latin este similară cu specificarea unui plan de execuție a interogării, ceea ce face mai ușor pentru programatori să controleze în mod explicit fluxul sarcinii lor de procesare a datelor.

SQL este orientat în jurul interogărilor care produc un singur rezultat. De asemenea, gestionează arborii, dar nu are un mecanism încorporat care să împartă un flux de procesare a datelor și să aplice diferiții operatori la fiecare sub-flux. Pig Latin descrie mai degrabă un grafic direcționat aciclic (DAG) decât o conductă.

Pig Latin este capabil să includă codul de utilizator în orice punct al conductei. Cu SQL, datele trebuie mai întâi importate în baza de date, înainte de a putea fi inițiat un proces de curățare și transformare.

Vezi și tu

  • Apache Hive
  • Sawzall - instrument similar de la Google
  • Hadoop
  • Categorie: Ecosistem Hadoop

Referințe

  1. https://pig.apache.org/releases.html
  2. „  https://pig.apache.org/releases.html  ”
  3. "  Hadoop: Apache Pig  " (accesat la 2 septembrie 2011 )
  4. „  Funcții definite de utilizator de porc  ” (accesat 3 mai 2013 )
  5. „  Yahoo Blog: Pig - The Road to a Efficient High-level language for Hadoop  ” (accesat la 23 mai 2015 )
  6. "  Porcul în incubație la Apache Software Foundation  " [ arhiva din3 februarie 2016] (accesat la 23 mai 2015 )
  7. "  Apache Software Foundation  " (accesat la 1 st noiembrie 2010 )
  8. "  Comunicări ale ACM: MapReduce și SGBD paralele: prieteni sau dușmani?  " [ Arhiva din1 st iulie 2015] [PDF] (accesat la 23 mai 2015 )
  9. (în) Alan Gates , „  Compararea SQL și Pig Latin pentru construirea conductelor de procesare a datelor  ” , 29 ianuarie 2010(accesat pe 6 februarie 2017 )
  10. „  Echipa de dezvoltare Yahoo Pig: Compararea Pig Latin și SQL pentru construirea conductelor de procesare a datelor  ” (accesat la 23 mai 2015 )
  11. „  ACM SigMod 08: Pig Latin: A Not-So-Foreign-Language for Processing Data  ” [PDF] (accesat la 23 mai 2015 )

linkuri externe