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