Différence entre "charger des données inpath" et "emplacement" dans la ruche?
De mon cabinet, je vois ces deux commandes utilisées fréquemment, et je tiens à être conscients des différences, parce que leur fonctionnalité semble la même pour moi:
1
create table <mytable>
(name string,
number double);
load data inpath '/directory-path/file.csv' into <mytable>;
2
create table <mytable>
(name string,
number double);
location '/directory-path/file.csv';
Ils copier les données à partir du répertoire sur HDFS dans le répertoire pour le tableau de la RUCHE. Existe-il des différences que l'on doit être conscient lors de l'utilisation de ces? Je vous remercie.
Je crois que pour votre deuxième question, la
location '/directory-path/file.csv';
ne fonctionnera pas puisque vous êtes la création d'une table interne (puisque vous n'avez pas explicitement spécifier create external table
et a simplement dit create table <mytable> (name string, number double);
). Par conséquent, vous ne pouvez pas utiliser l'emplacement sur la table interne depuis l'emplacement pour les tables internes est déjà définie par la configuration de la propriété hive.metastore.warehouse.dir
et vous ne pouvez le modifier à l'aide de la location
mot-clé.OriginalL'auteur Hunle | 2016-02-18
Vous devez vous connecter pour publier un commentaire.
Oui, ils sont utilisés à des fins différentes.
charger des données inpath de commande est utilisé pour charger des données dans la table de la ruche. "LOCAL" signifie que le fichier d'entrée est sur le système de fichiers local. Si "LOCAL" est omis, alors qu'il recherche le fichier dans HDFS.
EMPLACEMENT mot-clé permettent de points à tout HDFS emplacement de stockage, plutôt que d'être stockés dans un dossier spécifié par la propriété de configuration de la ruche.metastore.entrepôt.dir.
En d'autres termes, avec des
LOCATION '/your-path/'
, la Ruche ne pas utiliser l'emplacement par défaut de ce tableau. C'est très pratique si vous avez déjà des données générées.Rappelez-vous, l'EMPLACEMENT peut être préciser sur les tables EXTERNES seulement. Pour les tables régulières, l'emplacement par défaut sera utilisé.
Pour résumer,
charger des données inpath dire ruche où chercher les fichiers d'entrée et de EMPLACEMENT mot-clé indique la ruche où enregistrer les fichiers de sortie sur HDFS.
Références:
https://cwiki.apache.org/confluence/display/Hive/GettingStarted
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL
load data inpath
commande? J'ai remarqué que vous passez les noms de fichier.OriginalL'auteur Sachin Gaikwad
Option 1: table Interne
Cette commande permet de supprimer le contenu à la source de répertoire et de créer une table interne
Option 2: table Externe
Créer une table externe et de copier les données dans le tableau. Maintenant, les données ne sont pas déplacés à partir de la source. Vous pouvez tomber de la table externe, mais toujours source de données est disponible.
Lorsque vous déposez une table externe, il diminue seulement les méta-données de la table de la RUCHE. Les données existent toujours à HDFS l'emplacement du fichier.
Ont un coup d'oeil à ce SE des questions concernant des cas d'utilisation interne et externe des tables
La différence entre la Ruche des tables internes et externes tables?
location
? Je vois que vous avez chemin d'accès au fichier, mais j'ai vu direcotries.Deuxièmement, vous n'utilisez pas le mot-clé
external
dans votre "Option 2". Est table externe implicite lorsque vous utilisez le mot "location"?J'utilise uniquement des fichiers jusqu'à maintenant. Pas sûr au sujet de répertoire. Si dirextory est permis, toutes les lignes dans les fichiers doivent être dans le même format. Emplacement implicite pour les tables externes seulement.
OriginalL'auteur Ravindra babu