在Sentry中创建外部表格

时间:2016-01-13 06:18:28

标签: hadoop hive apache-sentry

我有一个4节点cloudera集群,其上启用了kerberos,并且具有保护Hive服务的哨兵。

当我使用hive用户创建一个表时,我可以这样做,因为它拥有数据库默认的所有权限。

0: jdbc:hive2://clnode4:10000/default> create table t123 (a int);
No rows affected (0.204 seconds)
0: jdbc:hive2://clnode4:10000/default> show tables from default;
+--------------+--+
|   tab_name   |
+--------------+--+
| t1           |
| t12          |
| t123         |
+--------------+--+
3 rows selected (0.392 seconds)

但是,当我尝试使用相同的用户配置单元在同一个环境中创建外部表时,我收到如下错误

0: jdbc:hive2://clnode4:10000/default> create external table t1_ex (a string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 'hdfs:///user/olap/KyvosDemo/Distance.csv';
Error: Error while compiling statement: FAILED: SemanticException No valid privileges
 User hive does not have privileges for CREATETABLE (state=42000,code=40000)

我提供了对URI的所有访问权限,因为我正在读取外部表的数据。

有没有办法在哨兵中为用户提供创建外部表格,任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

我能够通过授予服务器上的所有权限来解决问题,如下所示

grant all on server server1 to role hive;

将角色配置单元分配给配置单元用户。

修改

有关此问题的更多帮助可以在hive配置中找到具有属性名称“hive.sentry.server”的服务器名称