我使用以下查询在首选位置(/ 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
目录时创建。
create database test
location "/user/hive/test.db";
由于我是Hive的新手,请解释一下。
为什么在我将位置字段指定为test.db
的第一个查询中创建了/user/hive/
目录dint?
指定位置字段后,Hive将如何工作?
注意:
我正在使用cloudera快速启动VM
Hive版本:Hive 1.1.0-cdh5.13.0
答案 0 :(得分:1)
这是Hive的预期行为
create database test location "/user/hive/";
通过执行以上语句,意味着您正在指向 / user / hive 目录创建 test 数据库,因此这是hive尚未创建测试目录的原因。
我们还需要在目录中明确指出目录名称,即我们需要在hive中指向数据库,即create database test location "/user/hive/test.db";
,然后只有hive创建指向test.db目录的测试数据库。
如果使用create database test2;
语句,则意味着我们在创建数据库时未指定位置,因此该目录是在默认配置单元仓库位置下创建的,名称与数据库名称相同。