Apache Pig
Apache Pig[1] és una plataforma d'alt nivell per crear programes que s'executen a Apache Hadoop. El llenguatge per a aquesta plataforma s'anomena Pig Latin.[1] Pig pot executar els seus treballs Hadoop a MapReduce, Apache Tez o Apache Spark.[2] Pig Latin abstraeix la programació de l'idioma Java MapReduce en una notació que permet programar en MapReduce a un nivell més elevat, similar al de SQL per a sistemes de gestió de bases de dades relacionals. Pig Latin es pot estendre utilitzant funcions definides per l'usuari (UDFs) que l'usuari pot escriure en Java, Python, JavaScript, Ruby o Groovy[3] i després cridar directament des del llenguatge. HistòriaApache Pig va ser desenvolupat originalment[4] a Yahoo Research al voltant del 2006 perquè els investigadors tinguessin una manera ad hoc de crear i executar treballs de MapReduce en conjunts de dades molt grans. Al 2007[5] es va traslladar a la Fundació Apache Software.
NomenclaturaPel que fa a la denominació del llenguatge de programació Pig, el nom es va escollir arbitràriament i es va quedar perquè era memorable, fàcil d'escriure i de novetat.[7]
ExempleA continuació es mostra un exemple del programa Compta Lletre en el Pig Latin: linies_entrada = LOAD '/tmp/la-meva-còpia-de-totes-les-pàgines-en-internet' AS (linia:chararray);
-- Extreu les paraules de cada línia i les col·loca en una mena de dada "bossa" de Pig,
-- a continuació aplana la bossa per a obtenir una paraula en cada fila
paraulas = FOREACH linies_entrada GENERATE FLATTEN(TOKENIZE(linia)) AS paraula;
-- elimina qualsevol paraula que només contingui espais en blanc
paraules_filtrades = FILTER paraules BY paraula MATCHES '\\w+';
-- crear un grup per a cada paraula
grup_de_paraules = GROUP paraules_filtrades BY paraula;
-- comptar les entrades en cada grup
comptatge_de_paraules = FOREACH grup_de_paraules GENERATE COUNT(paraules_filtrades) AS comptatge, group AS paraula;
-- ordenar els registres per recompte
comptatge_de_paraules_ordenat = ORDER comptatge_de_paraules BY comptatge DESC;
STORE comptatge_de_paraules_ordenat INTO '/tmp/numero-de-paraules-en-internet';
El programa anterior generarà tasques executables paral·leles que es poden distribuir a través de diverses màquines en un clúster Hadoop per comptar el nombre de paraules en un conjunt de dades com totes les pàgines web a Internet. Característiques
Pig vs SQLEn comparació amb SQL, Pig
D'altra banda, s'ha argumentat que els DBMS són substancialment més ràpids que el sistema MapReduce una vegada que les dades es carreguen, però que la càrrega de les dades triga considerablement més en els sistemes de base de dades. També s'ha argumentat que els RDBMS ofereixen suport de serie per a l'emmagatzematge de columnes, treballant amb dades comprimides, índexs per a un accés eficient a les dades aleatòries i tolerància a errors a nivell de transacció. Pig Latin és procedimental i encaixa de forma molt natural en el paradigma de la canonada mentre que SQL és declaratiu. En SQL, els usuaris poden especificar que les dades de dues taules s'han d'unir, però no quina implementació d'unió utilitzar (podeu especificar la implementació de JOIN a SQL, per tant "... per a moltes aplicacions SQL, l'escriptor de consultes pot no tenir prou coneixement de les dades o suficient experiència per especificar un algorisme de join apropiat"). Pig Latin permet als usuaris especificar una implementació o aspectes d'una implementació que s'utilitzaran en l'execució d'un script de diverses maneres. En efecte, la programació Pig Latin és similar a l'especificació d'un pla d'execució de consultes, facilitant als programadors controlar explícitament el flux de la seva tasca de processament de dades. SQL s'orienta al voltant de consultes que produeixen un únic resultat. SQL maneja els arbres de forma natural, però no té cap mecanisme per dividir un flux de processament de dades i aplicar diferents operadors a cada sub-stream. L'escriptura Pig Latin descriu un graf acíclic dirigit (DAG) més que un pipeline. La capacitat de Pig Latin d'incloure codi d'usuari en qualsevol punt de la canonada és útil per al desenvolupament de la canonada. Si s'utilitza SQL, les dades primer s'han d'importar a la base de dades, i llavors el procés de neteja i transformació pot començar. Vegeu també
Referències
Enllaços externs |
Portal di Ensiklopedia Dunia