Apache Hive est un cadre qui se trouve au-dessus de Hadoop pour effectuer des requêtes ad hoc sur les données dans Hadoop. Hive prend en charge HiveQL, qui est similaire à SQL, mais ne prend pas en charge les constructions complètes de SQL.
Hive recouvre la requête HiveQL dans un programme Java MapReduce, puis la soumet au cluster Hadoop. Le même résultat peut être obtenu en utilisant HiveQL et Java MapReduce, mais en utilisant Java MapReduce, il faudra beaucoup de code pour être écrit / débogué par rapport à HiveQL. Ainsi, HiveQL augmente la productivité des développeurs.
Pour résumer, Hive, via le langage HiveQL, fournit une abstraction de niveau supérieur sur la programmation Java MapReduce. Comme pour toute autre abstraction de haut niveau, il y a un peu de surcharge de performances en utilisant HiveQL par rapport à Java MapReduce, mais la communauté Hive s'efforce de réduire cet écart pour la plupart des scénarios couramment utilisés.
Dans le même esprit, Pig fournit une abstraction de niveau supérieur sur MapReduce. Pig prend en charge les constructions PigLatin, qui sont converties dans le programme Java MapReduce puis soumises au cluster Hadoop.
Alors que HiveQL est un langage déclaratif comme SQL, PigLatin est un langage de flux de données. La sortie d'une construction PigLatin peut être envoyée en entrée à une autre construction PigLatin et ainsi de suite.
Il y a quelque temps, Cloudera a publié des statistiques sur le caractère de la charge de travail dans un cluster Hadoop typique et il peut être facilement observé que les travaux Pig et Hive constituent une bonne partie des travaux dans un cluster Hadoop. En raison de la productivité plus élevée des développeurs, de nombreuses entreprises optent pour des résumés de niveau supérieur comme Pig et Hive. Par conséquent, nous pouvons parier qu'il y aura beaucoup de postes vacants autour de Hive et Pig par rapport au développement MapReduce.
Bien que le livre Programming Pig ait été publié en octobre 2011, le livre Programming Hive a été publié plus récemment, en octobre 2012. Pour ceux qui ont de l'expérience avec RDBMS, commencer avec Hive serait une meilleure option que de commencer avec Pig. Notez également que le langage PigLatin n'est pas très difficile à démarrer.
Pour le cluster Hadoop sous-jacent, il est transparent qu'un travail Java MapReduce soit soumis ou qu'un travail MapReduce soit soumis via Hive et Pig. En raison de la nature orientée par lots des travaux MapReduce, les travaux soumis via Hive et Pig sont également orientés par lots.
Pour les exigences de réponse en temps réel, Hive and Pig ne répond pas aux exigences en raison de la nature orientée par lots mentionnée précédemment des travaux MapReduce. Cloudera a développé Impala, qui est basé sur Dremel (une publication de Google) pour des requêtes ad hoc interactives sur Hadoop. Impala prend en charge les requêtes de type SQL et est compatible avec HiveQL. Ainsi, toutes les applications construites au-dessus de Hive devraient fonctionner avec des modifications minimales avec Impala. La principale différence entre Hive et Impala est que même si HiveQL est converti en travaux Java MapReduce, Impala ne convertit pas la requête SQL en travaux Java MapReduce.
Devriez-vous aller avec Pig ou Hive pour une exigence particulière? C'est un sujet pour un autre blog.
Republié avec la permission de Praveen Sripati. L'article original se trouve ici: http://www.thecloudavenue.com/2012/12/introduction-to-apache-hive-and-pig.html