Questions D'entretien

Top 100 des questions et réponses d'entrevue de Hive

30 octobre 2021

C'est une aide pour savoir quel type de questions sont couramment posées lors d'un entretien Hive. Dans l'attente de devenir un HadoopName Développeur? Voici quelques questions d'entrevue Hive. Espérons que ces 100 questions et réponses des 100 meilleures questions et réponses vous préparent pour votre prochaine entrevue Hadoop. Vous trouverez ci-dessous la liste des questions d'entretien Apache Hive qui ont été formulées pour les brainstormers Apache Hive.

Principales questions et réponses des entretiens avec Hive

Table des matières

1. Quel type d'application d'entrepôt de données convient à Hive ? Quels sont les types de tables dans Hive ?

Hive n'est pas considéré comme une base de données complète. Les règles de conception et les réglementations de Hadoop et HDFS ont imposé des restrictions sur ce que Hive peut faire. Cependant, Hive est plus adapté aux structures de données dans les applications d'entrepôt car il :

  • Analyse des données relativement statiques.
  • A moins de temps de réponse.
  • ne modifie pas rapidement les données.

Bien que Hive ne fournisse pas les fonctionnalités fondamentales requises pour le traitement des transactions en ligne (OLTP), il convient à un cadre d'entrepôt de données dans de grands ensembles de données.

Il existe deux types de données de tables présentes dans Hive :

  • Tableaux gérés
  • Tableaux externes

2. Expliquez que SMB Join in Hive?

Dans la jointure SMB dans Hive, chaque mappeur poursuit un seau de la première table et le seau associé de la deuxième table, et après cela, une jointure de tri par fusion est effectuée. Les jointures SMB (Trier Merge Bucket) dans la ruche sont les plus utilisées car il n'y a aucune restriction sur les jointures de fichiers, de segments ou de tables.

La jointure SMB peut être utilisée au mieux lorsque les données de table stockées sont volumineuses. Dans la jointure SMB, les sections sont regroupées et organisées pour utiliser les segments de jointure. Le répertoire de la table doit avoir un nombre similaire de compartiments dans la jointure SMB.

3. En quoi HIVE est-il différent du SGBDR ?

  • RDBMS prend en charge le schéma en écriture tandis que Hive fournit le schéma en lecture.
  • Dans Hive, nous pouvons écrire une fois, mais dans RDBMS, nous pouvons écrire autant de fois que nous le voulons.
  • Hive peut gérer de gros ensembles de données alors que RDBMS ne peut pas gérer au-delà de 10 To.
  • Hive est hautement évolutif, mais l'évolutivité dans RDBMS coûte une perte.
  • Hive a une fonctionnalité de Bucketing qui n'existe pas dans RDBMS.

4. Quels types de bases de données Hive prend-il en charge ?

Pour le stockage de métadonnées mono-utilisateur, le système de base de données Hive utilise une base de données derby, et pour les métadonnées utilisateur multiples ou le cas de métadonnées partagées, Hive utilise MYSQL .

5. Dans Apache Hive, comment activer les buckets ?

Dans Hive, vous pouvez activer les buckets à l'aide de la commande suivante : set.hive.enforce.bucketing=true ;

Voir également Top 100 des questions et réponses d'entrevue Ansible

6. Apache Hive convient-il aux systèmes OLTP ? Pourquoi?

Non, il n'est pas adapté au système OLTP car il n'offre pas d'insertion et de mises à jour au niveau de la ligne.

7. Quelle est la fonctionnalité de l'inspecteur d'objets dans Apache Hive ?

Dans Hive, l'analyse de la structure interne des segments, des colonnes et des éléments complexes est terminée à l'aide de la fonctionnalité de l'inspecteur d'objets. La fonctionnalité Question Inspector met à disposition les champs internes, qui sont présents à l'intérieur des objets.

8. Quelles sont les limitations d'Apache Hive ?

  • Nous ne pouvons pas effectuer de requêtes en temps réel avec Hive.
  • Il n'offre pas de mises à jour au niveau des lignes.
  • Pour la navigation interactive dans les données, Hive offre une latence acceptable.
  • Hive n'est pas le bon choix pour le traitement des transactions en ligne.

9. Quels sont les différents modes dans Apache Hive ?

Parfois, dans les questions d'entretien Hive, les enquêteurs aiment poser ces questions de base pour voir à quel point vous êtes confiant en ce qui concerne vos connaissances Hive. Répondez en disant que Hive peut parfois fonctionner en deux modes, qui sont le mode MapReduce et le mode local. Expliquez que cela dépend de la taille des DataNodes dans Hadoop.

10. Qu'est-ce que Hive Bucketing ?

Lors de l'exécution de requêtes sur de grands ensembles de données dans une ruche apache, le bucketing peut offrir une meilleure structure aux tables Hive. Par exemple, le bucketing peut donner aux programmeurs plus de flexibilité en matière de tenue de registres et peut faciliter le débogage de grands ensembles de données en cas de besoin.

Principales questions et réponses des entretiens avec Hive

11. Quelle est la différence entre la partition et le bucketing ?

L'objectif principal du partitionnement et du regroupement est d'exécuter la requête plus efficacement. Lorsque vous créez une table de données, les tranches sont fixées dans le partitionnement de la table.

12. Où les données d'une table sont-elles stockées dans Hive ?

Dans un répertoire HDFS - /user/hive/warehouse, les données de la table sont stockées, par défaut uniquement. De plus, en spécifiant le répertoire souhaité dans le paramètre de configuration hive.metastore.warehouse.dir présent dans le hive-site.xml, on peut le changer.

13. Comment se passe le transfert de données de HDFS vers Hive ?

Si des données sont déjà présentes dans HDFS, l'utilisateur n'a pas besoin de CHARGER LES DONNÉES qui déplacent les fichiers vers /user/hive/warehouse/. Ainsi, l'utilisateur doit simplement définir la table à l'aide du mot-clé external qui crée la définition de table dans le metastore de la ruche.

14. Que fait le processeur de requêtes Hive ?

Le processeur de requêtes Hive convertit les graphiques des travaux MapReduce avec le cadre de temps d'exécution afin que les travaux puissent être exécutés dans l'ordre des dépendances.

15. Expliquer à propos de SORT BY, ORDER BY, DISTRIBUTE BY et CLUSTER BY dans Hive.

TRIER PAR - Les données sont triées sur chacun des 'N' réducteurs où les réducteurs peuvent avoir une plage de données qui se chevauchent.

ORDER BY - Ceci est similaire à ORDER BY dans les requêtes SQL où le classement total des données a lieu en le passant à un seul réducteur.

DISTRIBUTE BY – Il est utilisé pour répartir les lignes entre les réducteurs. Les lignes qui ont la même distribution par colonnes iront dans le même réducteur.

CLUSTER BY - Il s'agit d'une combinaison de DISTRIBUTE BY et SORT BY où chacun des N réducteurs obtient une plage de données sans chevauchement qui est ensuite triée par ces plages au niveau des réducteurs respectifs.

16. Quelle est la différence entre le metastore local et distant ?

Metastore local : il s'agit du service de configuration de métastore intégré qui s'exécute dans la même JVM dans laquelle le service Hive s'exécute et se connecte à une base de données s'exécutant dans une JVM distincte.

Métastore distant : dans cette configuration, le service de métastore s'exécute sur sa propre JVM distincte et non dans la JVM du service Hive.

17. Quelles classes sont utilisées dans Hive pour lire et écrire des fichiers HDFS ?

Les classes suivantes sont utilisées par Hive pour lire et écrire des fichiers HDFS :

  • TextInputFormat/HiveIgnoreKeyTextOutputFormat : ces 2 classes lisent/écrivent des données au format de fichier texte brut.
  • SequenceFileInputFormat/SequenceFileOutputFormat : ces 2 classes lisent/écrivent des données au format hadoop SequenceFile.

18. Expliquez la fonctionnalité d'ObjectInspector.

ObjectInspector aide à analyser la structure interne d'un objet ligne et la structure individuelle des colonnes dans Hive. Il fournit également un moyen uniforme d'accéder à des objets complexes qui peuvent être stockés dans plusieurs formats dans la mémoire.

  • Une instance de classe Java.
  • Un objet Java standard.
  • Un objet initialisé paresseusement

ObjectInspector indique la structure de l'objet et également les moyens d'accéder aux champs internes à l'intérieur de l'objet.

19. Qu'est-ce que la fonctionnalité ObjectInspector dans Hive ?

Hive utilise ObjectInspector pour analyser la structure interne du type de données des lignes et des colonnes. De plus, nous donne des moyens d'accéder aux champs internes à l'intérieur de l'objet. Il traite non seulement les types de données courants tels que int, bigint, STRING, mais également les types de données complexes tels que les tableaux, les cartes, les structures et l'union.

20. Comment le bucketing aide-t-il à accélérer l'exécution des requêtes ?

Ces types de questions et de réponses d'entretien de ruche visent à familiariser le candidat avec les supports essentiels de la ruche, le langage de requête de la ruche et l'index de la ruche.

Si vous devez joindre deux grandes tables, vous pouvez opter pour une jointure latérale réduite. Mais si les deux tables ont le même nombre de compartiments ou les mêmes multiples de compartiments et sont également triées sur la même colonne, il existe une possibilité de SMBMJ dans laquelle toutes les jointures ont lieu dans la phase de carte elle-même en faisant correspondre les compartiments correspondants.

Il existe différentes propriétés que vous devez définir pour les jointures de carte de compartiment et elles sont les suivantes :

set hive.enforce.sort merge bucket map join = false; définir hive.auto.convert.sortmerge.join = false ; définir hive.optimize.bucketmapjoin = true ; définir hive.optimize.bucketmapjoin.sortedmerge = true

Principales questions et réponses des entretiens avec Hive

21. Pourquoi mapreduce ne s'exécutera-t-il pas si vous exécutez select * à partir d'une table dans une ruche ?

Lorsque vous effectuez un select * from , Hive récupère toutes les données du fichier en tant que FetchTask plutôt qu'en tant que tâche mapreduce qui vide simplement les données telles quelles sans rien y faire. Ceci est similaire à hadoop dfs -text . Cependant, lors de l'utilisation de select from , Hive nécessite un travail de réduction de carte car il doit extraire la 'colonne' de chaque ligne en l'analysant à partir du fichier qu'il charge.

22. Qu'est-ce que Hive MetaStore ?

Hive MetaStore est un référentiel central de Hive, qui permet de stocker des métadonnées dans des bases de données externes. Par défaut, l'emplacement du magasin Hive est constitué de métadonnées dans une instance de base de données derby intégrée, mais vous pouvez les stocker dans MySql, Oracle dépend du projet.

23. Quels sont les trois modes différents dans lesquels les ruches peuvent fonctionner ?

  • Mode local
  • Mode distribué
  • Mode pseudo-distribué

24. Comment pouvez-vous empêcher qu'un travail volumineux ne s'exécute pendant une longue période ?

Ceci peut être réalisé en configurant les tâches MapReduce pour qu'elles s'exécutent en mode strict set hive.mapred.mode=strict. Le mode strict garantit que les requêtes sur des tables de partition particulières ne peuvent pas s'exécuter sans définir une clause WHERE.

25. Quand utilisons-nous exploser dans Hive ?

Les développeurs Hadoop prennent parfois un tableau en entrée et le convertissent en une ligne de tableau distincte. Pour convertir des types de données complexes dans les formats de table souhaités, Hive utilise éclater.

26. Quels sont les différents composants d'une architecture Hive ?

Hive Architecture se compose d'un :

  • Interface utilisateur - Le composant UI de l'architecture Hive appelle l'interface d'exécution du pilote.
  • Pilote - Le pilote crée un descripteur de session pour la requête et envoie la requête au compilateur pour générer un plan d'exécution pour celle-ci.
  • Metastore - Envoie les métadonnées au compilateur pour l'exécution de la requête à la réception de la requête sendMetaData.
  • Compilateur - Le compilateur génère le plan d'exécution qui est un DAG d'étapes où chaque étape est soit une opération de métadonnées, soit une tâche de mappage ou de réduction, soit une opération sur HDFS.
  • Moteur d'exécution - Le moteur d'exécution se charge de soumettre chacune de ces étapes aux composants concernés en gérant les dépendances entre les différentes étapes dans le plan d'exécution généré par le compilateur.

27. Comment pouvez-vous connecter une application si vous exécutez Hive en tant que serveur ?

Lors de l'exécution de Hive en tant que serveur, l'application peut être connectée de l'une des 3 manières-

  • Pilote ODBC-Ceci prend en charge le protocole ODBC
  • Pilote JDBC - Il prend en charge le protocole JDBC
  • Thrift Client - Ce client peut être utilisé pour appeler toutes les commandes Hive en utilisant différents langages de programmation comme PHP, Python, Java, C++ et Ruby.

28. Pouvons-nous CHARGER des données dans une vue ?

Non. Une vue ne peut pas être la cible d'une instruction INSERT ou LOAD.

29. Est-il possible d'ajouter 100 nœuds alors que nous en avons déjà 100 dans Hive ? Si oui, comment ?

Oui, nous pouvons ajouter les nœuds en suivant les étapes ci-dessous :

  • Étape 1 : Prenez un nouveau système ; créer un nouveau nom d'utilisateur et mot de passe
  • Étape 2 : Installez SSH et configurez les connexions SSH avec le nœud maître
  • Étape 3 : Ajoutez la clé d'identification ssh public_rsa au fichier authorized_keys
  • Étape 4 : Ajoutez le nouveau nom d'hôte DataNode, l'adresse IP et d'autres détails dans le fichier /etc/hosts slaves : 192.168.1.102 slave3.in slave3
  • Étape 5 : Démarrer le DataNode sur un nouveau nœud
  • Étape 6 : Connectez-vous au nouveau nœud comme suhadoop ou : ssh -X hadoop@192.168.1.103
  • Étape 7 : Démarrez HDFS du nœud esclave nouvellement ajouté à l'aide de la commande suivante : ./bin/hadoop-daemon.sh start data node
  • Étape 8 : Vérifiez la sortie de la commande jps sur le nouveau nœud

30. Hive peut-il traiter n'importe quel type de format de données ?

C'est l'une des questions d'entrevue courantes de la ruche.

Oui, Hive utilise l'interface SerDe pour les opérations IO. Différentes interfaces SerDe peuvent lire et écrire tout type de données. Si normal traite directement les données alors que différents types de données se trouvent dans Hadoop, Hive utilise une interface SerDe différente pour traiter ces données.

Voir également Top 100 des questions et réponses d'entrevue JavaScript

31. Comment pouvez-vous empêcher une partition d'être interrogée ?

Vous pouvez empêcher une partition d'être interrogée en utilisant la clause ENABLE OFFLINE avec l'instruction ALTER TABLE.

32. Qu'est-ce qu'une variable Hive ? À quoi l'utilisons-nous ?

Les variables Hive sont essentiellement créées dans l'environnement Hive référencé par les langages de script Hive. Ils permettent de transmettre certaines valeurs à une requête Hive lorsque la requête commence à s'exécuter. Ils utilisent la commande source.

33. Qu'est-ce que SerDe dans Apache Hive ?

Un SerDe est un nom abrégé pour un sérialiseur désérialiseur. Hive utilise SerDe pour lire et écrire des données à partir de tables externes Hive. Un concept important derrière Hive est qu'il NE possède PAS le format du système de fichiers Hadoop dans lequel les données sont stockées. Les utilisateurs peuvent écrire des fichiers sur HDFS avec n'importe quel outil/mécanisme qui leur plaît (CREATE EXTERNAL TABLE ou LOAD DATA INPATH, ) et utiliser Hive pour analyser correctement ce format de fichier d'une manière qui peut être utilisée par Hive.

34. Chaque fois que nous exécutons une requête Hive, un nouveau metastore_db est créé. Pourquoi?

Un metastore local est créé lorsque nous exécutons Hive en mode intégré. Avant de créer, il vérifie si le metastore existe ou non, et cette propriété de metastore est définie dans le fichier de configuration, hive-site.xml.

La propriété est : javax.jdo.option.ConnectionURL avec la valeur par défaut : jdbc:derby:;databaseName=metastore_db;create=true.

Par conséquent, nous devons modifier le comportement de l'emplacement en un chemin absolu afin qu'à partir de cet emplacement, le metastore puisse être utilisé.

35. Pouvons-nous modifier le type de données d'emplacement par défaut d'une colonne dans une table de ruche ?

Utilisation de l'option de colonne REPLACE : ALTER TABLE nom_table REPLACE COLUMNS

36. Pourquoi Hive ne stocke-t-il pas les informations de métadonnées dans HDFS ?

Hive stocke les informations de métadonnées dans le metastore à l'aide de RDBMS au lieu de HDFS. La principale raison de choisir RDBMS est d'obtenir une faible latence car les opérations de lecture/écriture HDFS sont des processus qui prennent du temps.

37. Comment Hive désérialise et sérialise les données ?

Habituellement, lors de la lecture/écriture des données, l'utilisateur communique d'abord avec inputformat. Ensuite, il se connecte au lecteur d'enregistrements pour lire/écrire des enregistrements. Pour sérialiser les données, les données vont dans une ligne. Ici, l'inspecteur d'objets personnalisé désérialisé utilise l'inspecteur d'objets pour désérialiser les données dans les champs.

38. Qu'est-ce que RegexSerDe ?

Regex représente une expression régulière. Chaque fois que vous souhaitez avoir une sorte de correspondance de modèle, basée sur la correspondance de modèle, vous devez stocker les champs. RegexSerDe est présent dans org.apache.hadoop.hive.contrib.serde2.RegexSerDe.

Dans les SerDeproperties, vous devez définir votre modèle d'entrée et vos champs de sortie. Par exemple, vous devez obtenir les valeurs de colonne à partir de la ligne xyz/pq@def si vous souhaitez prendre xyz, pq et def séparément.

39. Lors du chargement de données dans une table hive à l'aide de la clause LOAD DATA, comment spécifiez-vous qu'il s'agit d'un fichier hdfs et non d'un fichier local ?

En omettant la CLAUSE LOCAL dans l'instruction LOAD DATA.

40. Expliquer les différents types de partitionnement dans Hive ?

Le partitionnement dans Hive permet d'élaguer les données lors de l'exécution des requêtes pour accélérer le traitement. Dans les partitions statiques, le nom de la partition est codé en dur dans l'instruction d'insertion tandis que, dans une partition dynamique, Hive identifie automatiquement la partition en fonction de la valeur du champ de partition.

Principales questions et réponses des entretiens avec Hive

41. Quelle est la signification de la clause 'IF EXISTS lors de la suppression d'une table ?

Lorsque nous émettons la commande DROP TABLE IF EXISTS nom_table, Hive génère une erreur si la table supprimée n'existe pas en premier lieu.

42. Comment Hive peut-il éviter mapreduce ?

Si nous définissons la propriété hive.exec.mode.local.auto sur true, alors hive évitera que mapreduce récupère les résultats de la requête.

43. Quelle est la relation entre MapReduce et Hive ? ou Comment les jobs Mapreduce se soumettent au cluster ?

Hive ne fournit aucune fonctionnalité supplémentaire à MapReduce. Les programmes sont exécutés en tant que tâches MapReduce via l'interpréteur. L'interpréteur s'exécute sur une machine cliente qui transforme les requêtes HiveQL en tâches MapReduce. Framework soumet ces tâches au cluster.

44. Qu'est-ce que la fonctionnalité ObjectInspector ?

Hive utilise ObjectInspector pour analyser la structure interne de l'objet ligne ainsi que la structure des colonnes individuelles. ObjectInspector fournit un moyen uniforme d'accéder à des objets complexes qui peuvent être stockés dans plusieurs formats dans la mémoire, notamment :

Instance d'une classe Java (Thrift ou Java natif) :

  • Un objet Java standard (nous utilisons java.util.List pour représenter Struct et Array, et utilisons java.util.Map pour représenter Map).
  • Un objet initialisé paresseusement (par exemple, un Struct de champs de chaîne stockés dans un seul objet de chaîne Java avec un décalage de départ pour chaque champ) Un objet complexe peut être représenté par une paire d'ObjectInspector et d'objet Java. L'ObjectInspector nous indique non seulement la structure de l'objet, mais nous donne également des moyens d'accéder aux champs internes à l'intérieur de l'objet.

45. Supposons que je souhaite surveiller toutes les transactions ouvertes et abandonnées dans le système, ainsi que l'ID de transaction et l'état de la transaction. Cela peut-il être réalisé en utilisant Apache Hive ?

Hive 0.13.0 et les versions supérieures prennent en charge la commande SHOW TRANSACTIONS qui aide les administrateurs à surveiller diverses transactions Hive.

46. ​​Une partition peut-elle être archivée ? Quels sont les avantages et les inconvénients?

Oui. Une partition peut être archivée. L'avantage est qu'il diminue le nombre de fichiers stockés dans namenode et que le fichier archivé peut être interrogé à l'aide de hive. L'inconvénient est que cela entraînera des requêtes moins efficaces et n'offre aucune économie d'espace.

47. L'archivage des tables Hive économise-t-il de l'espace dans HDFS ?

Non. Cela ne fait que réduire le nombre de fichiers, ce qui devient plus facile à gérer pour le nœud de nom.

48. Hive prend-il en charge l'insertion, la suppression ou la mise à jour au niveau de l'enregistrement ?

Hive ne fournit pas de mises à jour, d'insertion ou de suppression au niveau des enregistrements. Désormais, Hive ne fournit pas non plus de transactions. Cependant, les utilisateurs peuvent utiliser les instructions CASE et les fonctions intégrées de Hive pour satisfaire les opérations DML ci-dessus. Ainsi, une requête de mise à jour complexe dans un SGBDR peut nécessiter de nombreuses lignes de code dans Hive.

49. Quels sont les délimiteurs d'enregistrement et de champ par défaut utilisés pour les fichiers texte Hive ?

C'est l'une des rares questions d'entrevue de la ruche. Le délimiteur d'enregistrement par défaut est − . Et les délimiteurs de champ sont − 01,02,03.

50. Quelle est la différence entre la partition statique et dynamique d'une table ?

Ce type de questions d'entretien de ruche est destiné aux étudiants de première année.

Pour élaguer les données lors d'une requête, une partition peut minimiser le temps de requête. La partition est créée lorsque les données sont insérées dans la table. Une partition statique peut insérer des lignes individuelles tandis qu'une partition dynamique peut traiter la table entière en fonction d'une colonne particulière. Au moins une partition statique est requise pour créer une partition (statique, dynamique). Si vous partitionnez un grand ensemble de données, il est recommandé de faire une sorte de partition dynamique de flux ETL.

51. Pourquoi procédons-nous au partitionnement dans Hive ?

Dans une table Hive, le partitionnement fournit une granularité. Par conséquent, en analysant uniquement les données partitionnées pertinentes au lieu de l'ensemble de données, cela réduit la latence des requêtes.

52. Comment le partitionnement aide-t-il à accélérer l'exécution des requêtes ?

Avec l'aide du partitionnement, un sous-répertoire sera créé avec le nom de la colonne partitionnée et lorsque vous effectuez une requête à l'aide de la clause WHERE, seul le sous-répertoire particulier sera analysé au lieu d'analyser toute la table. Cela vous donne une exécution plus rapide des requêtes.

53. Pouvez-vous énumérer quelques services Hive couramment utilisés ?

  • Interface de ligne de commande (cli)
  • Interface Web de la ruche (hwi)
  • HiveServer (serveur de la ruche)
  • Impression du contenu d'un fichier RC à l'aide de l'outil rcfilecat.
  • Pot
  • Métastore

54. Quelle est la partition dynamique maximale par défaut pouvant être créée par un mappeur/réducteur ? Comment pouvez-vous le changer?

Par défaut, le nombre maximum de partitions pouvant être créées par un mappeur ou un réducteur est défini sur 100. On peut le modifier en lançant la commande suivante :

SET hive.exec.max.dynamic.partitions.pernode = .

55. Pourquoi avons-nous besoin de seaux ?

Fondamentalement, pour effectuer un bucketing sur une partition, il y a deux raisons principales :

  • Une jointure côté carte nécessite que les données appartenant à une clé de jointure unique soient présentes dans la même partition.
  • Cela nous permet de diminuer le temps de requête. En outre, rend le processus d'échantillonnage plus efficace.

56. Pouvons-nous nommer les vues de la même manière que le nom d'une table Hive ?

Non. Le nom d'une vue doit être unique par rapport à toutes les autres tables et aux vues présentes dans la même base de données.

57. Quelles options sont disponibles lorsqu'il s'agit de joindre des applications au serveur Hive ?

Expliquez les trois manières différentes (thrift client, pilote JDBC et pilote ODBC) de connecter des applications au serveur Hive. Vous voudrez également expliquer le but de chaque option : par exemple, l'utilisation de JDBC prendra en charge le protocole JDBC.

58. Quand devrions-nous utiliser SORT BY au lieu de ORDER BY ?

Malgré ORDER BY, nous devrions utiliser SORT BY. Surtout lorsque nous devons trier d'énormes ensembles de données. La raison en est que la clause SORT BY trie les données à l'aide de plusieurs réducteurs. ORDER BY trie toutes les données ensemble à l'aide d'un seul réducteur. Par conséquent, l'utilisation de ORDER BY prendra beaucoup de temps pour exécuter un grand nombre d'entrées.

59. Quelles sont les utilisations de Hive Explode ?

Les développeurs Hadoop considèrent un tableau comme leur entrée et le convertissent en une ligne de tableau distincte. Pour convertir des types de données complexes dans les formats de table souhaités, Hive utilise Explode.

60. Pouvons-nous exécuter des commandes shell UNIX à partir de Hive ? Les requêtes Hive peuvent-elles être exécutées à partir de fichiers de script ? Si oui, comment ?

Ces types de questions et réponses d'entrevue de ruche sont d'importance modérée. Oui, nous pouvons exécuter des commandes shell UNIX à partir de Hive en utilisant une marque ' !' avant la commande. Par exemple, !pwd à l'invite Hive affichera le répertoire actuel. Nous pouvons exécuter des requêtes Hive à partir des fichiers de script à l'aide de la commande source.

Voir également Top 100 des questions et réponses d'entrevue Ansible

Principales questions et réponses des entretiens avec Hive

61. Comment le format de fichier ORC est-il optimisé pour le stockage et l'analyse des données ?

ORC stocke des collections de lignes dans un fichier et dans la collection, les données de ligne seront stockées dans un format en colonne. De format colonnaire, il est très facile à compresser, réduisant ainsi beaucoup les coûts de stockage. Lors de l'interrogation également, il interroge la colonne particulière au lieu d'interroger la ligne entière car les enregistrements sont stockés au format en colonnes. ORC a indexé sur chaque bloc en fonction des statistiques min, max, somme, nombre de colonnes, donc lorsque vous interrogez, il ignore les blocs en fonction de l'indexation.

62. Quelle est la différence entre les tables internes et externes ?

  • Table interne : MetaStore et les données réelles sont toutes deux stockées dans le système local. Dans toutes les situations, les données perdues, à la fois les données réelles et le méta-stockage, seront perdues.
  • Table externe : le schéma est stocké dans la base de données. Données réelles stockées dans les tables Hive. Si des données sont perdues dans la table externe, elles ne perdent que le metastore, mais pas les données réelles.

63. Expliquez les différents types de jointures dans Hive.

HiveQL a 4 types de jointures différents -

  • JOIN - Semblable à Outer Join in SQL
  • FULL OUTER JOIN – Combine les enregistrements des tables externes gauche et droite qui remplissent la condition de jointure.
  • LEFT OUTER JOIN - Toutes les lignes de la table de gauche sont renvoyées même s'il n'y a pas de correspondance dans la table de droite.
  • RIGHT OUTER JOIN-Toutes les lignes de la table de droite sont renvoyées même s'il n'y a pas de correspondance dans la table de gauche.

64. Qu'est-ce qu'un metastore dans Hive ?

Il s'agit d'une base de données relationnelle stockant les métadonnées des tables Hive, des partitions, des bases de données Hive, etc.

65. Quelle est la fonctionnalité du processeur de requêtes dans Apache Hive ?

Ce composant implémente le cadre de traitement pour la conversion SQL au graphique des travaux de mappage/réduction et au cadre de temps d'exécution pour exécuter ces travaux dans l'ordre des dépendances.

66. Quelle est l'utilisation de Hcatalog ?

Hcatalog peut être utilisé pour partager des structures d'information avec des systèmes externes. Hcatalog donne accès au méta-magasin Hive aux clients d'autres appareils sur Hadoop dans le but qu'ils puissent lire et composer des informations dans un entrepôt de données Hive.

67. Comment allez-vous optimiser les performances de Hive ?

Il existe différentes façons d'exécuter des requêtes Hive plus rapidement -

  • Utilisation du moteur d'exécution Apache Tez
  • Utiliser la vectorisation
  • Utiliser ORCFILE
  • faire une optimisation des requêtes basée sur les coûts.

68. Dans le cas de Hive intégré, le même metastore peut-il être utilisé par plusieurs utilisateurs ?

Nous ne pouvons pas utiliser metastore en mode partage. Il est suggéré d'utiliser des bases de données réelles autonomes comme PostGreSQL et MySQL.

69. Quand utiliser le mode Map reduce ?

Le mode de réduction de carte est utilisé lorsque : - Il s'exécute sur une grande quantité d'ensembles de données et que la requête s'exécute de manière parallèle - Hadoop a plusieurs nœuds de données et les données sont réparties sur différents nœuds. Nous utilisons Hive dans ce mode - Traitement de grands ensembles de données avec de meilleures performances doivent être atteints

70. Quelle est l'importance du serveur et du client Thrift, du pilote JDBC et ODBC dans Hive ?

Thrift est un framework RPC inter-langage qui génère du code et combine une pile logicielle pour finalement exécuter le code Thrift sur un serveur distant. Le compilateur Thrift agit comme un interprète entre le serveur et le client. Le serveur Thrift permet à un client distant de soumettre une demande à Hive, en utilisant différents langages de programmation comme Python, Ruby et Scala.

Pilote JDBC : Un pilote JDBC est un composant logiciel permettant à une application Java d'interagir avec une base de données.

Pilote ODBC : ODBC assure l'indépendance du SGBD en utilisant un pilote ODBC comme couche de traduction entre l'application et le SGBD.

71. Quelle est la base de données par défaut de Hive pour stocker ses métadonnées ?

Derby est la base de données par défaut. Il s'agit d'un metastore intégré de Hive. Nous pouvons le configurer pour utiliser n'importe quelle base de données par défaut pour le metastore.

72. Quel est le moteur d'exécution par défaut dans Hive ?

Map Reduce est le moteur d'exécution par défaut.

73. Comment changer le moteur d'exécution dans Hive ?

  • SET hive.execution.engine = tez

74. Quel composant de Hive se connecte au cluster Hadoop pour l'exécution des requêtes ?

Moteur d'exécution

75. Quel composant de Hive convertit la requête SQL en fichier jar pour l'exécution ?

Moteur d'exécution

76. Comment voyez-vous le plan d'exécution de la requête ?

Utiliser expliquer

|__+_|

77. Comment voyez-vous la base de données sur laquelle vous travaillez actuellement ?

Définir hive.cli.print.current.db = true

|__+_|

78. Quel est l'emplacement de stockage par défaut des tables Hive ?

  • /utilisateur/ruche/entrepôt

79. Que faites-vous pour avoir une table qui ne devrait exister que pour cette session particulière de Hive ?

  • Créer une table temporaire
hive> créer une table temporaire t3 (coll int, chaîne col2); OKTemps pris : 0,047 seconde
  • Hive 0.14 et versions ultérieures prennent en charge les tables temporaires. Vous pouvez les utiliser comme un tableau normal dans une session utilisateur. L'emplacement sera /tmp/hive//*.

80. Quelles sont les limitations des tables temporaires Hive ?

  • Il n'est disponible que pour la session où il a été créé.
  • Supprimé automatiquement à la fin de la session.
  • L'option de colonne de partition n'est pas prise en charge sur les tables temporaires.
  • La création d'index sur des tables temporaires n'est pas autorisée.
  • L'utilisateur ne peut pas accéder à la table permanente avec le même nom que les tables temporaires pendant cette session sans renommer les tables temporaires.

Principales questions et réponses des entretiens avec Hive

81. Quels sont les différents types de tables dans Hive ?

  • Tableau temporaire
  • Tableau géré
  • Tableau externe

82. Scénario : nous devons stocker l'une des données de flux dans la table Hive et l'exposer à la consommation. Quelles sont les démarches que vous ferez ?

  • Parlez à l'équipe source et obtenez des informations sur le schéma des données du flux telles que le type de données, la taille des données, le volume de données, etc.
  • Parlez à l'équipe commerciale qui va consommer les données et trouvez les critères de recherche qu'ils utiliseront.
  • Sur la base des deux tables de création ci-dessus avec partitionnement/segment/indexation, etc.

83. Quels sont les terminateurs par défaut dans Hive ?

  • Terminateur de champ -ctrl + A
  • Fin de ligne -

84. Comment obtenez-vous les informations de schéma des tables dans Hive ?

DÉCRIRE FORMATÉ

85. Pouvons-nous utiliser DESCRIBE pour la base de données pour voir les détails ?

Non, c'est uniquement pour les tables.

86. Comment chargez-vous les données de l'emplacement Linux vers l'emplacement de la table Hive à l'aide du script Hive ?

  • Chargez le chemin d'entrée local des données '/home/hduser/hive/data/txns' dans la table txnrecords ;
  • Charger les données local inpath ‘/home/hduser/hive/data/txns’ écraser dans la table txnrecords ;

Il copie le contenu de Linux vers l'emplacement de la table Hive.

87. Comment chargez-vous les données de l'emplacement HDFS vers l'emplacement de la table Hive à l'aide du script Hive ?

  • Charger les données dans le chemin d'accès '/user/hduser/txns 1' dans la table txnrecords ;
  • Charger les données dans le chemin ‘/user/hduser/txns 1’ écraser dans la table txnrecords ;

Il déplace les données de l'emplacement HDFS vers l'emplacement de la table Hive.

88. Comment convertir une rangée d'enregistrements en un seul objet dans Hive ?

  • Utilisez Collect_Set() ou Collect_List()
  • Collect_Set() supprime les doublons

89. Comment convertir un tableau de données en lignes individuelles ?

  • Explode ne peut pas être utilisé avec d'autres colonnes
  • Vue latérale éclatée - peut utiliser d'autres colonnes
  • PosExplode - exploser avec index

90. Quels sont les différents types d'index disponibles dans Hive ?

  • Index compact - utilisation dans une colonne cardinale élevée
  • Bitmap - à utiliser dans la colonne lowcardinal

91. Quels sont les différents types de partitions disponibles dans Hive ?

  • Statique : basé sur certains facteurs externes
  • Charger les données local inpath '/home/hduser/hive/student_details2' dans la table partition étudiant (course = hadoop)
  • Dynamique : basé sur les données
  • Définissez hive.exec.dynamic.partition=true ;
  • Définissez hive.exec.dynamic.partition.mode=nonstrict ;
  • Chargez le chemin d'accès local des données '/home/hduser/hive/student_details' dans la table stud_demo ;
  • Insérez dans la partition student_part (cours) sélectionnez l'identifiant, le nom, l'âge, l'institut, le cours de stud_demo ;

92. Où les valeurs Null et Empty seront-elles stockées en cas de partitions ?

  • _HIVE_DEFAULT_PARTITIONS rép.

93. Les valeurs de partition sont-elles sensibles à la casse ?

Oui

94. Pouvons-nous faire une partition dynamique en utilisant la commande LOAD DATA ?

Non

95. Les métadonnées seront-elles mises à jour si nous chargeons les données de partition à l'aide de la commande LOAD DATA ?

Oui

  • Charger le chemin d'accès local des données '/home/hduser/hive/student_details2' dans la table partition étudiant (course = hadoop);

96. Pouvons-nous mettre à jour et supprimer dans la table Hive ?

  • Par défaut, non.
  • Oui si la transaction est activée et que la table est au format ORC et compartimentée.
  • TBLPROPERTIES ('transactionnel'='vrai')
  • Définissez hive.enforce.bucketing = true,

Limites:

  • Les tables externes ne sont pas prises en charge
  • Seul le format ORC est pris en charge
  • Le chargement n'est pas pris en charge sur les tables de traduction ACID. Par conséquent, utilisez insert into.
  • Sur les sessions transactionnelles, toutes les opérations sont validées automatiquement car BEGIN, COMMIT ET ROLLBACK ne sont pas encore pris en charge.

97. Comment la partition aide-t-elle à gérer les données ?

  • Nous pouvons facilement supprimer les données de portion de la table en supprimant simplement la partition.
  • Nous pouvons mettre à jour la partie des données avec une valeur mise à jour en écrasant simplement les données du dossier de partition.

98. Comment charger seulement quelques champs d'un fichier ?

C'est un processus en deux étapes

  • Charger toutes les données dans la table gérée - LOAD DATA LOCAL INPATH
  • Insérez une sélection avec les champs obligatoires de la table gérée à la table externe

99. Scénario : J'ai créé manuellement un dossier de partition et y ai conservé des données. Mais lorsque j'interroge la table Hive pour cette valeur de partition, je n'obtiens pas de données. Que devrais-je faire?

  • Exécutez msck repair ou ajoutez manuellement la partition.
  • Il s'agit du contrôle de cohérence du metastore de Hive.

100. Scénario : J'ai supprimé manuellement une partie du dossier de la partition, puis j'ai exécuté la réparation msck, supprimera-t-il la partition des métadonnées ?

Non, nous devons supprimer manuellement la partition.

Ces principales questions d'entretien de Hive ont été conçues spécifiquement pour vous familiariser avec la nature des questions que vous pourriez rencontrer lors de votre entretien pour le sujet de Hive.