Apache Pig

Apache Pig

Informasjon
Utviklet av Apache Software Foundation
Første versjon 11. september 2008
Siste versjon 0,17,0 (19. juni 2017)
Innskudd svn.apache.org/repos/asf/pig
Prosjekt status under utvikling
Skrevet i Java
Operativsystem Microsoft Windows , macOS og Linux
Miljø Java virtuell maskin
Tillatelse Apache-lisens
Nettsted https://pig.apache.org/

Pig er en plattform på høyt nivå for å lage MapReduce- programmer som brukes med Hadoop . Språket til denne plattformen kalles Pig Latin . Grislatinabstrakt fra MapReduce Java- programmeringsspråket og beveger seg til et høyere abstraksjonsnivå, som SQL for RDBMS-systemer. Griselatin kan utvides ved hjelp av UDF (brukerdefinerte funksjoner) som brukeren kan skrive i Java , Python , JavaScript , Ruby eller Groovy og deretter brukes direkte på språket.

Pig ble opprinnelig utviklet ved Yahoo Research på 2006-tallet for forskere som ønsket en ad-hoc-løsning for å skape og kjøre kartreduserende jobber på store datasett. I 2007 ble den overført til Apache Software Foundation .

Eksempel

Her er et eksempel på et " Word Count " -program på griselatin:

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';

Ovennevnte program vil generere parallelle kjørbare oppgaver som kan distribueres på flere maskiner i en Hadoop-klynge for å telle antall ord i et datasett, for eksempel websider på Internett.

Gris vs SQL

Sammenlignet med SQL, Pig:

  1. Bruk lat evaluering ,
  2. bruker utpakke, transformere, laste (ETL),
  3. er i stand til å lagre data når som helst i løpet av en rørledning ,
  4. erklærer gjennomføringsplanen ,
  5. utfører den delte arbeidsflyten i henhold til en graf, i stedet for en ren sekvensiell kjøring.

I motsetning til dette er DBMS betydelig raskere enn MapReduce-systemet når data er lastet inn, og denne datalastingen er mye raskere i et MapReduce-system. Og relationsdatabasesystemer gir kolonnelagring utenom boksen, komprimert databehandling, indeksering for raskere datalokalisering og feiltoleranse på transaksjonsnivå .

Griselatin er et prosessuelt språk og passer naturlig inn i rørledningsparadigmet mens SQL er ganske deklarativ. I SQL kan brukere spesifisere at data fra to tabeller skal kobles sammen, men ikke hvilken sammenkobling som skal brukes og "... for mange applikasjoner har ikke søkemotoren tilstrekkelig kunnskap om dataene eller tilstrekkelig kompetanse til å spesifisere en passende sammenføyning algoritme. ". Pig Latin lar brukerne spesifisere en implementering eller aspekter av implementeringen som skal brukes til å utføre et skript på flere måter. Dette er fordi Pig Latin-programmering ligner på å spesifisere en plan for kjøringsutførelse, noe som gjør det lettere for programmerere å eksplisitt kontrollere flyten i databehandlingsoppgaven.

SQL er orientert rundt spørsmål som gir et enkelt resultat. Den administrerer også trær, men har ingen innebygd mekanisme for å dele en databehandlingsstrøm og bruke de forskjellige operatørene på hver delstrøm. Pig Latin beskriver en Acyclic Directed Graph (DAG) i stedet for en rørledning.

Pig Latin er i stand til å inkludere brukerkode når som helst i rørledningen. Med SQL må data først importeres til databasen før en oppryddings- og transformasjonsprosess kan startes.

Se også

  • Apache Hive
  • Sawzall - lignende verktøy fra Google
  • Hadoop
  • Kategori: Hadoop økosystem

Referanser

  1. https://pig.apache.org/releases.html
  2. "  https://pig.apache.org/releases.html  "
  3. "  Hadoop: Apache Pig  " (åpnet 2. september 2011 )
  4. "  Brukerdefinerte grisefunksjoner  " (åpnet 3. mai 2013 )
  5. "  Yahoo Blog: Pig - The Road to an Effective High-level language for Hadoop  " (åpnet 23. mai 2015 )
  6. "  Pig into Incubation at the Apache Software Foundation  " [ arkiv av3. februar 2016] (åpnet 23. mai 2015 )
  7. "  The Apache Software Foundation  " (vist på en st november 2010 )
  8. "  Kommunikasjon av ACM: MapReduce og Parallelle DBMS: Venner eller fiender?  " [ Arkiv av1 st juli 2015] [PDF] (åpnet 23. mai 2015 )
  9. (i) Alan Gates , Sammenligning av SQL og griselatin for konstruksjon av databehandlingsrørledninger  " , 29. januar 2010(åpnet 6. februar 2017 )
  10. “  Yahoo Pig Development Team: Comparing Pig Latin and SQL for Constructing Data Processing Pipelines  ” (åpnet 23. mai 2015 )
  11. "  ACM SigMod 08: Pig Latin: A Not-So-Foreign Language for Data Processing  " [PDF] (åpnet 23. mai 2015 )

Eksterne linker