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 .
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.
Sikaan verrattuna SQL: ään:
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.