Apache Hive es un marco que se encuentra en la parte superior de Hadoop para realizar consultas ad-hoc sobre datos en Hadoop. Hive admite HiveQL, que es similar a SQL, pero no admite las construcciones completas de SQL.
Hive convierte la consulta HiveQL en un programa Java MapReduce y luego la envía al clúster Hadoop. Se puede lograr el mismo resultado usando HiveQL y Java MapReduce, pero usar Java MapReduce requerirá que se escriba / depure mucho código en comparación con HiveQL. Entonces, HiveQL aumenta la productividad del desarrollador.
Para resumir, Hive, a través del lenguaje HiveQL, proporciona una abstracción de nivel superior sobre la programación Java MapReduce. Al igual que con cualquier otra abstracción de alto nivel, hay un poco de sobrecarga de rendimiento al usar HiveQL en comparación con Java MapReduce, pero la comunidad Hive está trabajando para reducir esta brecha en la mayoría de los escenarios comúnmente utilizados.
En la misma línea, Pig proporciona una abstracción de nivel superior sobre MapReduce. Pig admite construcciones PigLatin, que se convierten en el programa Java MapReduce y luego se envían al clúster Hadoop.
Si bien HiveQL es un lenguaje declarativo como SQL, PigLatin es un lenguaje de flujo de datos. La salida de una construcción PigLatin se puede enviar como entrada a otra construcción PigLatin y así sucesivamente.
Hace algún tiempo, Cloudera publicó estadísticas sobre el carácter de la carga de trabajo en un clúster de Hadoop típico y se puede observar fácilmente que los trabajos de Pig y Hive constituyen una buena parte de los trabajos en un clúster de Hadoop. Debido a la mayor productividad del desarrollador, muchas empresas están optando por resúmenes de mayor nivel como Pig y Hive. Entonces, podemos apostar que habrá muchas vacantes de trabajo alrededor de Hive y Pig en comparación con el desarrollo de MapReduce.
Aunque el libro Programming Pig se publicó en octubre de 2011, el libro Programming Hive se publicó más recientemente, en octubre de 2012. Para aquellos que tienen experiencia trabajando con RDBMS, comenzar con Hive sería una mejor opción que comenzar con Pig. También tenga en cuenta que el lenguaje PigLatin no es muy difícil de comenzar.
Para el clúster Hadoop subyacente, es transparente si se envía un trabajo MapReduce de Java o si se envía un trabajo MapReduce a través de Hive y Pig. Debido a la naturaleza orientada a lotes de los trabajos de MapReduce, los trabajos enviados a través de Hive y Pig también están orientados a lotes.
Para los requisitos de respuesta en tiempo real, Hive and Pig no cumple con los requisitos debido a la naturaleza orientada por lotes mencionada anteriormente de los trabajos de MapReduce. Cloudera desarrolló Impala, que se basa en Dremel (una publicación de Google) para consultas interactivas ad-hoc sobre Hadoop. Impala admite consultas de tipo SQL y es compatible con HiveQL. Por lo tanto, cualquier aplicación que se cree sobre Hive debería funcionar con cambios mínimos con Impala. La principal diferencia entre Hive e Impala es que, si bien HiveQL se convierte en trabajos Java MapReduce, Impala no convierte la consulta SQL en trabajos Java MapReduce.
¿Deberías ir con Pig o Hive para un requisito particular? Ese es un tema para otro blog.
Republicado con permiso de Praveen Sripati. El artículo original se puede encontrar aquí: http://www.thecloudavenue.com/2012/12/introduction-to-apache-hive-and-pig.html