3

我有一个 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 的所有访问权限。

有什么方法可以为哨兵中的用户提供创建外部表,任何帮助都会很棒。

4

1 回答 1

0

我可以通过将服务器上的所有权限授予 hive 用户来解决问题,如下所示

grant all on server server1 to role hive;

角色 hive 分配给 hive 用户。

编辑

关于这一点的更多帮助可以在配置单元配置中找到具有属性名称“hive.sentry.server”的服务器名称

于 2016-01-15T09:12:02.000 回答