Apache Sika

Apache Sika

Tiedot
Kehittäjä Apache-ohjelmistosäätiö
Ensimmäinen versio 11. syyskuuta 2008
Viimeinen versio 0,17,0 (19. kesäkuuta 2017)
Tallettaa svn.apache.org/repos/asf/pig
Projektin tila kehityksessä
Kirjoitettu Java
Käyttöjärjestelmä Microsoft Windows , macOS ja Linux
Ympäristö Java-virtuaalikone
Lisenssi Apache-lisenssi
Verkkosivusto https://pig.apache.org/

Sika on korkean tason perustan luomisessa MapReduce ohjelmia käytetään Hadoop . Tämän alustan kieltä kutsutaan sika-latinalaiseksi . Pig Latin tiivistää MapReduce Java- ohjelmointikielen ja siirtyy korkeammalle abstraktiotasolle, samanlainen kuin SQL for RDBMS -järjestelmät. Sika-latinaa voidaan laajentaa UDF: llä (User Defined Functions), jonka käyttäjä voi kirjoittaa Java- , Python- , JavaScript- , Ruby- tai Groovy-muodossa ja käyttää sitten suoraan kielellä.

Pig kehitettiin alun perin Yahoo Researchissa 2006-luvulla tutkijoille, jotka halusivat tapauskohtaisen ratkaisun luoda ja käyttää karttoja vähentäviä työpaikkoja suurissa tietojoukoissa. Vuonna 2007 se siirrettiin Apache Software Foundationille .

Esimerkki

Tässä on esimerkki sana- latinalaisesta " Word Count " -ohjelmasta:

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

Yllä oleva ohjelma luo rinnakkaisia ​​suoritettavia tehtäviä, jotka voidaan jakaa useille Hadoop-klusterin koneille, jotta voidaan laskea sanojen määrä tietojoukossa, kuten Internet-verkkosivuilla.

Sika vs SQL

Sikaan verrattuna SQL: ään:

  1. Käytä laiska arviointia ,
  2. käyttää pura, muunna, lataa (ETL),
  3. pystyy tallentamaan tietoja milloin tahansa putkilinjan aikana ,
  4. julistaa toteutussuunnitelman ,
  5. suorittaa jaetun työnkulun kaavion mukaan puhtaasti peräkkäisen suorituksen sijaan.

Sitä vastoin DBMS: t ovat huomattavasti nopeampia kuin MapReduce-järjestelmä, kun tiedot ladataan, ja tämä lataus on paljon nopeampaa MapReduce-järjestelmässä. Ja relaatiotietokantajärjestelmien tarjota out-of-the-box sarake varastointi, pakatun datan käsittely, indeksointi nopeammin datan sijainti, ja kauppa-tason vikasietoisuutta .

Sika-latina on menettelykieli ja sopii luonnollisesti putkilinjan paradigmaan, kun taas SQL on melko deklaratiivinen. SQL: ssä käyttäjät voivat määrittää, että kahden taulukon tiedot on yhdistettävä, mutta ei sitä, mitkä liittymän käyttöönotot käyttävät, ja "... monien sovellusten kohdalla kyselymoottorilla ei ole riittävästi tietoa tiedoista tai riittävää asiantuntemusta sopivan liittymisen määrittämiseksi. algoritmi. ". Pig Latin -sovelluksen avulla käyttäjät voivat määrittää toteutuksen tai sen näkökohdat, joita komentosarjan suorittamiseen käytetään useilla tavoilla. Tämä johtuu siitä, että Pig Latin -ohjelmointi on samanlainen kuin kyselyn suoritussuunnitelman määrittäminen, mikä helpottaa ohjelmoijien valvoa nimenomaan tietojenkäsittelytehtävän kulkua.

SQL on suuntautunut kyselyihin, jotka tuottavat yhden tuloksen. Se hoitaa myös puita, mutta sillä ei ole sisäänrakennettua mekanismia tietojenkäsittelyvirran jakamiseksi ja eri operaattoreiden käyttämiseksi kuhunkin alivirtaan. Pig Latin kuvaa asyklistä suunnattua kuvaajaa (DAG) putkilinjan sijaan.

Pig Latin pystyy sisällyttämään käyttäjäkoodin missä tahansa vaiheessa putkistoa. SQL: n avulla tiedot on ensin tuotava tietokantaan, ennen kuin puhdistus- ja muunnosprosessi voidaan aloittaa.

Katso myös

Viitteet

  1. https://pig.apache.org/releases.html
  2. "  https://pig.apache.org/releases.html  "
  3. "  Hadoop: Apache Pig  " (katsottu 2. syyskuuta 2011 )
  4. "  Pig-käyttäjän määrittelemät toiminnot  " (käytetty 3. toukokuuta 2013 )
  5. "  Yahoo Blog: Pig - Tie tehokkaaseen korkean tason kieleen Hadoopille  " (käytetty 23. toukokuuta 2015 )
  6. "  Pig osaksi Inkubaatio Apache Software Foundation  " [ arkisto3. helmikuuta 2016] (käytetty 23. toukokuuta 2015 )
  7. "  Apache Software Foundation  " (tutustuttavissa 1. st marraskuu 2010 )
  8. "  ACM: n viestintä: MapReduce ja rinnakkaiset DBMS: t: Ystävät vai viholliset?  " [ Arkisto1. st heinäkuu 2015] [PDF] (käytetty 23. toukokuuta 2015 )
  9. (in) Alan Gates , SQL: n ja Pig Latinin vertailu tietojenkäsittelyputkien rakentamiseen  " , 29. tammikuuta 2010(katsottu 6. helmikuuta 2017 )
  10. “  Yahoo Pig Development Team: Pig Latin and SQL -vertailun rakentaminen tietojenkäsittelyputkilinjoille  ” (käyty 23. toukokuuta 2015 )
  11. "  ACM SigMod 08: Pig Latin: ei-niin-vieras kieli tietojenkäsittelyyn  " [PDF] (käytetty 23. toukokuuta 2015 )

Ulkoiset linkit