在我们公司中,我经常看到这两个命令被使用,而且我想了解它们之间的区别,因为它们的功能对我来说似乎是相同的:
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';
它们都将数据从HDFS目录复制到HIVE表的目录中。在使用它们时,有什么区别需要注意吗?谢谢。
location '/directory-path/file.csv';
将不起作用,因为您正在创建一个内部表(因为您没有明确指定create external table
,而只是简单地说create table <mytable> (name string, number double);
)。因此,您无法在该内部表上使用位置,因为内部表的位置已经由配置属性hive.metastore.warehouse.dir
设置,并且您不能使用location
关键字更改它。 - user5228393