Apache Hive és un marc situat a la part superior de Hadoop per fer consultes ad-hoc sobre dades a Hadoop. Hive admet HiveQL, que és similar a SQL, però no admet les construccions completes de SQL.
Hive encobreix la consulta HiveQL en un programa Java MapReduce i després la envia al clúster Hadoop. El mateix resultat es pot aconseguir mitjançant HiveQL i Java MapReduce, però per utilitzar Java MapReduce caldrà escriure / depurar molt de codi en comparació amb HiveQL. Així doncs, HiveQL augmenta la productivitat dels desenvolupadors.
En resum, Hive, mitjançant el llenguatge HiveQL, proporciona una abstracció més elevada sobre la programació Java MapReduce. Com en qualsevol altra abstracció de nivell, hi ha una mica de rendiment a l’hora d’utilitzar HiveQL en comparació amb Java MapReduce, però la comunitat Hive treballa per reduir aquesta bretxa per a la majoria dels escenaris d’ús comú.
En la mateixa línia, Pig proporciona una abstracció més elevada sobre MapReduce. Pig admet les construccions de PigLatin, que es converteixen en el programa Java MapReduce i es remeten al clúster Hadoop.
Si bé HiveQL és un llenguatge declaratiu com SQL, PigLatin és un llenguatge de flux de dades. La sortida d'una construcció de PigLatin es pot enviar com a entrada a una altra construcció PigLatin, etc.
Fa un temps, Cloudera va publicar estadístiques sobre el caràcter de càrrega de treball en un clúster Hadoop típic i es pot observar fàcilment que les feines Pig i Hive formen bona part de les tasques d’un clúster Hadoop. A causa de la gran productivitat dels desenvolupadors, moltes empreses opten per resums de nivell més alt com Pig i Hive. Per tant, podem apostar que hi haurà moltes obertures de treball al voltant de Hive i Pig en comparació amb el desenvolupament MapReduce.
Tot i que el llibre Programming Pig es va publicar a l’octubre de 2011, el llibre Programming Hive es va publicar més recentment, a l’octubre de 2012. Per a aquells que tinguin experiència treballant amb RDBMS, començar amb Hive seria una opció millor que començar amb Pig. Tingueu en compte que el llenguatge PigLatin no és gaire complicat de començar.
Per al clúster subjacent d’Hadoop, és transparent si s’envia una tasca Java MapReduce o una tasca MapReduce s’envia a través de Hive i Pig. A causa de la naturalesa orientada a lots de treballs MapReduce, els treballs enviats mitjançant Hive i Pig també estan orientats a la naturalesa per lots.
Per als requeriments de resposta en temps real, Hive and Pig no compleix els requisits a causa de la naturalesa esmentada de lots de treballs MapReduce. Cloudera va desenvolupar Impala, que es basa en Dremel (una publicació de Google) per a consultes interactives ad-hoc a la part superior de Hadoop. Impala admet consultes similars a SQL i és compatible amb HiveQL. Per tant, qualsevol aplicació que es crei a la part alta de l'Ernús ha de funcionar amb canvis mínims amb Impala. La diferència principal entre Hive i Impala és que si HiveQL es converteix en treballs Java MapReduce, Impala no amaga la consulta SQL en treballs Java MapReduce.
Hauríeu d’anar amb Porc o Rusc per un requisit determinat? Això és un tema per a un altre bloc.
Reeditat amb permís de Praveen Sripati. L'article original es pot trobar aquí: http://www.thecloudavenue.com/2012/12/introduction-to-apache-hive-and-pig.html