无法在指定位置的配置单元中看到创建的数据库
Posted
技术标签:
【中文标题】无法在指定位置的配置单元中看到创建的数据库【英文标题】:Unable to see created database in hive in specified location 【发布时间】:2015-02-10 08:14:55 【问题描述】:我是 Hive 的新手。
我在 Hive 中创建了一个数据库,默认情况下该数据库是在 Hive 仓库中创建的。当我对 Hive Warehouse 运行 -ls 时,我能够看到创建的数据库 practice.db。
用于创建数据库的查询:
创建数据库实践
COMMENT '拥有所有练习桌';
我在 Hive 中创建了另一个数据库。当我对创建数据库的路径运行 -ls 命令时,无法看到 practice_first.db。
用于创建数据库的查询:
创建数据库 practice_first
COMMENT '拥有所有练习桌'
LOCATION '/somepath in hdfs here';
即使我在 Hive 仓库中检查了 practice_first.db 也不存在于 Hive 仓库中。
当我运行 show database 时,我可以在数据库列表中看到 practice_first 数据库。
Hive 创建 practice_first.db 的任何建议。
提前致谢。
【问题讨论】:
【参考方案1】:刚刚测试以确保它应该在没有添加任何表格的情况下出现,并且确实如此。在创建后尝试在数据库上使用 describe 来验证路径:
hive> create database test1 COMMENT 'testing' LOCATION '/user/testuser/test1.db';
OK
Time taken: 0.63 seconds
hive> describe database test1;
OK
test1 testing hdfs://nameserviceHA/user/testuser/test1.db testuser USER
Time taken: 0.183 seconds, Fetched: 1 row(s)
hive> exit;
$ hadoop fs -ls /user/testuser/ | grep test
drwxr-xr-x - testuser testgrp 0 2015-02-12 15:43 /user/testuser/test1.db
对默认位置执行相同操作将自动使用 .db 扩展名命名该目录。此外,在这种情况下,该组看起来将是配置单元而不是用户组:
hive> drop database test1;
OK
Time taken: 0.379 seconds
hive> create database test1 COMMENT 'testing'; OK
Time taken: 0.319 seconds
hive> describe database test1;
OK
test1 testing hdfs://nameserviceHA/user/hive/warehouse/test1.db testuser USER
Time taken: 0.263 seconds, Fetched: 1 row(s)
hive> exit;
$ hadoop fs -ls /user/hive/warehouse | grep test1
drwxrwxrwt - testuser hive 0 2015-02-12 15:53 /user/hive/warehouse/test1.db
【讨论】:
【参考方案2】:会在LOCATION
指定的路径创建
检查HIVE-1537和this
【讨论】:
嗨@sonic 根据 JIRA 链接,它应该在指定的位置。但是当我对指定位置运行 -ls 时,指定位置中没有 practice_first.db。请有任何建议。 应该是这样,我刚刚在我的机器上试了一下,它就在那里。 还有一点,当您指定位置时,除非您指定,否则文件夹不会有 .db 扩展名。【参考方案3】:如果
你将能够看到practice_first.db目录1) 您在默认位置创建数据库。
2) 您在 CREATE DATABASE 语句的 LOCATION 中明确提供目录名称为 practice_first.db。
【讨论】:
以上是关于无法在指定位置的配置单元中看到创建的数据库的主要内容,如果未能解决你的问题,请参考以下文章