在Hive

时间:2018-07-15 07:53:28

标签: sql hadoop hive

我使用以下查询在首选位置(/ 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/目录

当我在如下所示的LOCATION中明确指定

/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

1 个答案:

答案 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;语句,则意味着我们在创建数据库时未指定位置,因此该目录是在默认配置单元仓库位置下创建的,名称与数据库名称相同。