在配置单元的位置字段中显式指定之前,不会创建sql数据库目录

jvlzgdj9  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(345)

我使用下面的查询用我的首选位置(/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

2admgd59

2admgd591#

这是hive的预期行为

create database test location "/user/hive/";

执行上述语句意味着您正在指向/user/hive目录创建测试数据库,所以这就是hive没有创建测试目录的原因。
我们还需要明确提到目录名,我们需要将数据库指向配置单元中的哪个位置,即 create database test location "/user/hive/test.db"; 然后只有配置单元创建指向test.db目录的test db。
万一 create database test2; 语句意味着我们在创建数据库时没有指定位置,因此此目录是在默认配置单元仓库位置下创建的,名称与db name相同。

相关问题