Quelqu'un peut-il me dire la différence entre la table externe de Hive et les tables internes. Je sais que la différence vient du fait de laisser tomber la table. Je ne comprends pas ce que vous entendez par les données et les métadonnées sont supprimées en interne et seules les métadonnées sont supprimées dans les tables externes. Quelqu'un peut-il m'expliquer en termes de nœuds s'il vous plaît.
Les tables Hive peuvent être créées comme EXTERNAL ou INTERNAL. Il s'agit d'un choix qui affecte la manière dont les données sont chargées, contrôlées et gérées.
Utilisez des tables EXTERNES lorsque:
Utilisez les tables INTERNAL lorsque:
la source
Pour répondre à votre question:
Pour les tables externes, Hive stocke les données à l'emplacement spécifié lors de la création de la table (généralement pas dans le répertoire de l'entrepôt). Si la table externe est supprimée, les métadonnées de la table sont supprimées mais pas les données.
Pour les tables internes, Hive stocke les données dans son répertoire d'entrepôt. Si la table est supprimée, les métadonnées de la table et les données seront supprimées.
Pour votre information,
Différence entre les tables internes et externes:
Hive peut avoir des tables internes ou externes, c'est un choix qui affecte la façon dont les données sont chargées, contrôlées et gérées.
Utilisez des tables EXTERNES lorsque:
Utilisez les tables INTERNAL lorsque:
La source :
HDInsight: Introduction aux tables internes et externes Hive
Tables internes et externes dans Hadoop- HIVE
la source
Une donnée de table interne est stockée dans le dossier de l'entrepôt, tandis qu'une donnée de table externe est stockée à l'emplacement que vous avez mentionné lors de la création de la table.
Ainsi, lorsque vous supprimez une table interne, cela supprime le schéma ainsi que les données sous le dossier de l'entrepôt, mais pour une table externe, c'est uniquement le schéma que vous perdrez.
Ainsi, lorsque vous souhaitez récupérer une table externe après l'avoir supprimée, vous pouvez à nouveau créer une table avec le même schéma et la pointer vers l'emplacement des données d'origine. J'espère que c'est clair maintenant.
la source
La seule différence de comportement (pas l'utilisation prévue) basée sur mes recherches et mes tests limités jusqu'à présent (en utilisant Hive 1.1.0 -cdh5.12.0) semble être que lorsqu'une table est supprimée
(REMARQUE: voir la section 'Tables gérées et externes' dans https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL qui liste une autre différence que je n'ai pas complètement comprise)
Je pense que Hive choisit l'emplacement où il doit créer la table en fonction de la priorité suivante de haut en bas
Lorsque l'option "Emplacement" n'est pas utilisée lors de la "création d'une table ruche", la règle de priorité ci-dessus est utilisée. Cela s'applique aux tables internes et externes. Cela signifie qu'une table interne ne doit pas nécessairement résider dans le répertoire Warehouse et peut résider n'importe où ailleurs.
Remarque: j'ai peut-être manqué certains scénarios, mais sur la base de mon exploration limitée, le comportement des tables interne et externe semble être le même, à l'exception de la seule différence (suppression des données) décrite ci-dessus. J'ai essayé les scénarios suivants pour les tables internes et externes.
la source
Dans les tables externes, si vous le supprimez, il supprime uniquement le schéma de la table, les données de la table existent dans l'emplacement physique. Donc, pour supprimer les données, utilisez hadoop fs - rmr tablename. La ruche de table gérée aura un contrôle total sur les tables. Dans les tables externes, les utilisateurs auront le contrôle dessus.
la source
Les tables internes sont utiles si vous souhaitez que Hive gère le cycle de vie complet de vos données, y compris la suppression, tandis que les tables externes sont utiles lorsque les fichiers sont utilisés en dehors de Hive.
la source
La table de ruche externe présente l'avantage de ne pas supprimer les fichiers lorsque nous supprimons des tables, nous pouvons définir des formats de ligne avec différents paramètres, comme serde .... délimité
la source
Gardez également à l'esprit que Hive est un entrepôt de données volumineuses. Lorsque vous souhaitez supprimer une table, vous ne voulez pas perdre de gigaoctets ou de téraoctets de données. La génération, le déplacement et la copie de données à cette échelle peuvent prendre du temps. Lorsque vous déposez une ruche de table «gérée», ses données sont également supprimées. Lorsque vous supprimez une table «Externe», seule la définition de schéma du méta-magasin Hive est supprimée. Les données sur le hdfs restent toujours.
la source
Considérez ce scénario qui convient le mieux à la table externe:
Un travail MapReduce (MR) filtre un énorme fichier journal pour cracher les
n
sous-fichiers journaux (par exemple, chaque sous-fichier journal contient un journal de type de message spécifique) et la sortie ien
sous-fichiers journaux, sont stockés dans hdfs.Ces fichiers journaux doivent être chargés dans des tables Hive pour effectuer des analyses supplémentaires.Dans ce scénario, je recommanderais une ou plusieurs tables externes, car les fichiers journaux réels sont générés et détenus par un processus externe, c'est-à-dire un travail MR en plus, vous pouvez éviter un étape supplémentaire de chargement de chaque fichier journal généré dans la table Hive respective.
la source
Le meilleur cas d'utilisation pour une table externe dans la ruche est lorsque vous souhaitez créer la table à partir d'un fichier CSV ou texte
la source
la ruche stocke uniquement les métadonnées dans le métastore et les données d'origine à l'extérieur de la ruche lorsque nous utilisons une table externe, nous pouvons indiquer l'emplacement `` par ces dernières, nos données d'origine n'auront aucun effet lorsque nous supprimons la table
la source
Lorsqu'il existe déjà des données dans HDFS, une table Hive externe peut être créée pour décrire les données. Il est appelé EXTERNAL car les données de la table externe sont spécifiées dans les propriétés LOCATION au lieu du répertoire d'entrepôt par défaut.
Lors de la conservation des données dans les tables internes, Hive gère entièrement le cycle de vie de la table et des données. Cela signifie que les données sont supprimées une fois la table interne supprimée. Si la table externe est supprimée, les métadonnées de la table sont supprimées mais les données sont conservées. La plupart du temps, une table externe est préférable pour éviter de supprimer des données avec des tables par erreur.
la source
Pour les tables gérées, Hive contrôle le cycle de vie de leurs données. Hive stocke les données des tables gérées dans un sous-répertoire sous le répertoire défini par hive.metastore.warehouse.dir par défaut.
Lorsque nous supprimons une table gérée, Hive supprime les données de la table, mais les tables gérées sont moins pratiques à partager avec d'autres outils. Par exemple, disons que nous avons des données qui sont créées et utilisées principalement par Pig, mais que nous voulons exécuter certaines requêtes contre elles, mais ne pas donner à Hive la propriété des données.
À ce moment-là, une table externe est définie qui pointe vers ces données, mais n'en prend pas possession.
la source
INTERNE : la table est créée en premier et les données sont chargées plus tard
EXTERNE : des données sont présentes et une table est créée par-dessus .
la source
Dans Hive, nous pouvons également créer une table externe. Il indique à Hive de faire référence aux données qui se trouvent à un emplacement existant en dehors du répertoire de l'entrepôt. La suppression de tables externes supprimera les métadonnées mais pas les données.
la source
Je voudrais ajouter que
la source
En termes simples, il y a deux choses:
Hive peut gérer les choses dans l'entrepôt, c'est-à-dire qu'il ne supprimera pas les données de l'entrepôt. Lorsque nous supprimons la table:
1) Pour les tables internes, les données sont gérées en interne dans l'entrepôt. Ainsi sera supprimé.
2) Pour les tables externes, les données sont gérées éternellement depuis l'entrepôt. Il ne peut donc pas être supprimé et les clients autres que Hive peuvent également l'utiliser.
la source