我想确认哪个用户是HIVE中数据库的所有者。我在哪里可以找到这些信息?
答案 0 :(得分:5)
DESCRIBE|DESC DATABASE显示数据库的名称,其注释(如果已设置),以及它在文件系统上的根位置。 SCHEMA
和DATABASE
的用法是可以互换的 - 它们的意思相同。 Hive 0.15(HIVE-8803)中添加了DESCRIBE SCHEMA
。
EXTENDED也显示数据库属性。
DESCRIBE DATABASE [EXTENDED] db_name;
DESCRIBE SCHEMA [EXTENDED] db_name; -- (Note: Hive 0.15.0 and later)
这些示例显示cards
用户创建了cloudera
数据库:
hive> SET hive.cli.print.header=true;
hive> describe database cards;
OK
db_name comment location owner_name owner_type parameters
cards hdfs://quickstart.cloudera:8020/user/hive/warehouse/cards.db cloudera USER
Time taken: 0.013 seconds, Fetched: 1 row(s)
hive> desc schema cards;
OK
db_name comment location owner_name owner_type parameters
cards hdfs://quickstart.cloudera:8020/user/hive/warehouse/cards.db cloudera USER
Time taken: 0.022 seconds, Fetched: 1 row(s)
可替换地,
Hive数据库只是Hive仓库目录位置的hdfs目录,其扩展名为.db
。您只需从hadoop fs -ls
命令获取用户:
对于一个目录,它返回其直接子节点的列表,就像在Unix中一样。目录列为:
permissions userid groupid modification_date modification_time dirname
目录中的文件默认按文件名排序。
示例:
hadoop fs -ls /user/hive/warehouse/*.db |awk '{print $3,$NF}'
答案 1 :(得分:0)
如果您已将配置单元配置为外部Metastore,如mysql或derby,则可以查询Metastore表 DBS 以获取信息。
<强>查询强>
select NAME,OWNER_NAME,OWNER_TYPE from DBS;
<强>输出强>
+--------------+------------+------------+
| NAME | OWNER_NAME | OWNER_TYPE |
+--------------+------------+------------+
| default | public | ROLE |
| employee | addy | USER |
| test | addy | USER |
答案 2 :(得分:0)
两者都可以解决您的问题:
hive> describe database extended db_name;
hive> describe schema extended db_name;
输出将具有所有者用户名。