我使用下面的查询用我的首选位置(/user/hive/)创建了一个数据库。
create database test
location "/user/hive/";
创建数据库后,我签入了位置 /user/hive/
为了 test.db
使用命令的目录 hadoop dfs -ls /user/hive
. 它不可用。
后来,我又使用下面的查询创建了一个默认位置的数据库。
create database test2;
对于数据库test2,我可以看到 test2.db
默认仓库目录下的目录
/user/hive/warehouse/ /user/hive/test.db
当我在下面的location字段中显式指定它时,目录被创建了。
create database test
location "/user/hive/test.db";
由于我是新来的Hive,请解释一下。
为什么? test.db
directory dint是为我的第一个查询创建的,我将location字段指定为 /user/hive/
?
指定位置字段时,配置单元将如何工作?
注:
我正在使用cloudera快速入门虚拟机
配置单元版本:配置单元1.1.0-cdh5.13.0
1条答案
按热度按时间2admgd591#
这是hive的预期行为
执行上述语句意味着您正在指向/user/hive目录创建测试数据库,所以这就是hive没有创建测试目录的原因。
我们还需要明确提到目录名,我们需要将数据库指向配置单元中的哪个位置,即
create database test location "/user/hive/test.db";
然后只有配置单元创建指向test.db目录的test db。万一
create database test2;
语句意味着我们在创建数据库时没有指定位置,因此此目录是在默认配置单元仓库位置下创建的,名称与db name相同。