我有一个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的所有访问权限,因为我正在读取外部表的数据。
有没有办法在哨兵中为用户提供创建外部表格,任何帮助都会很棒。
答案 0 :(得分:0)
我能够通过授予服务器上的所有权限来解决问题,如下所示
grant all on server server1 to role hive;
将角色配置单元分配给配置单元用户。
修改强>
有关此问题的更多帮助可以在hive配置中找到具有属性名称“hive.sentry.server”的服务器名称