如何找到用户拥有HIVE数据库的用户?

时间:2016-08-12 18:53:00

标签: hive

我想确认哪个用户是HIVE中数据库的所有者。我在哪里可以找到这些信息?

3 个答案:

答案 0 :(得分:5)

DESCRIBE|DESC DATABASE显示数据库的名称,其注释(如果已设置),以及它在文件系统上的根位置。 SCHEMADATABASE的用法是可以互换的 - 它们的意思相同。 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;

输出将具有所有者用户名。