Introduction à HiveQL

HiveQL, communément appelé HQL, est un langage de requête de type SQL pour le traitement de gros morceaux de données de l'environnement Hadoop. Développé à l'origine par Facebook vers 2007, Hive est devenu plus tard un projet Apache open source. Les requêtes Hive avec une syntaxe similaire à SQL sont devenues populaires parmi les analystes de données de nos jours. HiveQL utilisant HDFS pour le stockage et MapReduce pour le traitement aide à obtenir des informations pour les utilisateurs de Big Data avec une expérience de codage minimale. Divers autres moteurs de calcul distribués comme Apache Tez et Apache Spark peuvent être utilisés avec HiveQL pour un traitement plus rapide de l'analyse de données à grande échelle. Les différentes façons d'utiliser HiveQL sont: CLI (Command Line Interface), des produits commerciaux comme Karmasphere, Hue et Qubole open source de Cloudera.

Fonctionnement de HiveQL

Hive fournit un dialecte de type SQL pour la manipulation des données, ce qui nous évite d'écrire des travaux MapReduce de bas niveau pour récupérer les données (via Mapper) et agréger les résultats finaux (via les modules de réduction).

  • Exécution de la requête Hive

Les étapes impliquées dans l'exécution d'une requête Hive sont les suivantes:

  1. L'interface Hive (via CLI ou Web UI) envoie la requête au pilote (qui est JDBC, ODBC ou Thrift Server) pour la compiler, l'optimiser et l'exécuter. Il vérifie la requête via un compilateur pour la syntaxe et le plan d'exécution.
  2. Le compilateur envoie une demande à Metastore et reçoit des métadonnées en réponse.
  3. Le compilateur communique le plan d'exécution au pilote, qui l'envoie ensuite au moteur d'exécution.
  4. Le moteur d'exécution interagit avec le Job Tracker, qui est le nœud de nom pour effectuer le travail.
  5. En parallèle, le moteur d'exécution exécute également l'opération de métadonnées.
  6. Le nœud de nom fait le travail par le traqueur de tâches ou les nœuds de données.
  7. Résultats partagés avec le moteur d'exécution, qui sont ensuite affichés sur l'interface via le pilote.
  • Optimisation des requêtes

Optimisation de HiveQL pour une meilleure optimisation des requêtes. En utilisant les commandes ci-dessous, nous pouvons remplacer les configurations par défaut et permettre une exécution plus rapide des requêtes.

1 . SET hive.execution.engine = tez

Par défaut, le moteur d'exécution est défini comme Mapreduce, mais nous pouvons explicitement le définir sur tez (pour Hadoop 2 uniquement) ou Spark (pour Hive 1.1. 0 et ultérieur).

2 . SET hive.mapred.mode = unstrict

C'est pour le partitionnement dynamique qui est utile pour charger de grands ensembles de données. Cependant, le partitionnement statique est défini par défaut, ce qui se produit en mode «strict».

3 . SET hive.vectorized.execution = true

définir hive.vectorized.execution.enabled = true

L'exécution de requêtes vectorisées permet aux opérations telles que les agrégats, les filtres ou les jointures de se produire par lots de 1024 lignes au lieu d'une seule ligne à la fois.

4 . SET hive.auto.convert.join = true

Lors de la jonction d'un grand ensemble de données avec un très petit ensemble de données, les jointures de carte sont plus efficaces et peuvent être définies à l'aide de la commande ci-dessus.

5 . SET hive.exec.parallel = true

Les travaux MapReduce sont exécutés en parallèle dans Hadoop. Parfois, si les requêtes ne dépendent pas les unes des autres, l'exécution parallèle peut être favorisée, ce qui permet une meilleure gestion de la mémoire.

6 . SET hive.exec.compress.output = true

Cela permet à la sortie finale d'être stockée dans HDFS dans un format compressé.

7 . SET hive.exec.compress.output = true

Cela permet à la sortie finale d'être stockée dans HDFS dans un format compressé.

Caractéristiques de HiveQL

  1. Étant un langage de haut niveau, les requêtes Hive sont implicitement converties en tâches de réduction de carte ou en DAG complexes (graphiques acycliques dirigés). En utilisant le mot clé «Explain» avant la requête, nous pouvons obtenir le plan de requête.
  2. Exécution plus rapide des requêtes à l'aide du stockage de métadonnées au format RDMS et réplique les données, ce qui facilite la récupération en cas de perte.
  3. L'indexation bitmap est effectuée pour accélérer les requêtes.
  4. Améliore les performances en permettant le partitionnement des données.
  5. Hive peut traiter différents types de fichiers compressés, économisant ainsi de l'espace disque.
  6. Pour manipuler des chaînes, des entiers ou des dates, HiveQL prend en charge l'extension des fonctions définies par l'utilisateur (UDF), afin de résoudre les problèmes non pris en charge par les UDF intégrés.
  7. Il fournit une gamme d'API supplémentaires pour créer un moteur de requête personnalisé.
  8. Différents formats de fichiers sont pris en charge comme Textfile, Sequencefile, ORC (Optimized Row Columnar), RCFile, Avro et Parquet. Le format de fichier ORC est le plus approprié pour améliorer les performances des requêtes car il stocke les données de la manière la plus optimisée, ce qui accélère l'exécution des requêtes.
  9. Il s'agit d'un outil d'analyse de données et ETL efficace pour les grands ensembles de données 10. Facile à écrire des requêtes car il est similaire à SQL. Les commandes DDL (Data definition language) dans la ruche sont utilisées pour spécifier et modifier la structure de la base de données ou des tables dans la ruche. Ces commandes sont déposer, créer, tronquer, modifier, afficher ou décrire.

Limites

  1. Les requêtes Hive ont une latence plus élevée car Hadoop est un système orienté batch.
  2. Les requêtes imbriquées ou secondaires ne sont pas prises en charge.
  3. L'opération de mise à jour, de suppression ou d'insertion ne peut pas être effectuée au niveau d'un enregistrement.
  4. Le traitement ou l'interrogation des données en temps réel n'est pas offert via le champ d'application Hive de HQL.

Avec des pétaoctets de données, allant de milliards à des milliards d'enregistrements, HiveQL a une large portée pour les professionnels du big data.

Portée de HiveQL

Vous trouverez ci-dessous les façons dont la portée de HiveQL s'élargit et sert mieux l'objectif d'analyser quotidiennement les données gigantesques générées par les utilisateurs.

Sécurité: Outre le traitement de grandes données, Hive assure la sécurité des données. Cette tâche est complexe pour le système distribué, car plusieurs composants sont nécessaires pour communiquer entre eux. La prise en charge des autorisations Kerberos permet l'authentification entre le client et le serveur.

Verrouillage: Traditionnellement, Hive manque de verrouillage sur les lignes, les colonnes ou les requêtes. Hive peut exploiter Apache Zookeeper pour la prise en charge du verrouillage.

Gestion du flux de travail : Apache Oozie est un planificateur de flux de travail pour automatiser diverses requêtes HiveQL à exécuter séquentiellement ou en parallèle.

Visualisation: le bloc-notes Zeppelin est un bloc-notes basé sur le Web, qui permet l'analyse interactive des données. Il prend en charge Hive et Spark pour la visualisation et la collaboration des données.

Conclusion

HiveQL est largement utilisé dans les organisations pour résoudre des cas d'utilisation complexes. En gardant à l'esprit les fonctionnalités et les limites offertes par le langage, le langage de requête Hive est utilisé dans les télécommunications, les soins de santé, la vente au détail, les services bancaires et financiers et même le système d'évaluation climatique de la NASA Test Propulsion Laboratory. La facilité d'écriture de SQL comme les requêtes et les commandes permet une acceptation plus large. L'opportunité d'emploi croissante dans ce domaine attire des professionnels plus frais et de différents secteurs pour acquérir une expérience pratique et des connaissances sur le domaine.

Articles recommandés

Ceci est un guide pour HiveQL. Nous discutons ici de l'introduction à HiveQL, de l'optimisation des requêtes et de ses limites et fonctionnalités. Vous pouvez également consulter nos articles connexes pour en savoir plus -

  1. Qu'est-ce que les types de données Hive?
  2. Alternatives à la ruche | Découvrez les fonctionnalités
  3. Principaux composants des commandes Hive
  4. Questions d'entretiens chez Top 10 Hive

Catégorie: