无法将Sentry与Hive绑定
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法将Sentry与Hive绑定相关的知识,希望对你有一定的参考价值。
这篇文章是关于绑定Sentry与Hive。我一直面对这个问题。
我的主要目标是提供对创建角色时获得权限的数据库和表的访问。
首先,我在Cloudera Manager中启用了Sentry并重新启动了服务器然后我创建了角色,并在下面给出了直线特权 -
CREATE ROLE role1;
GRANT ROLE role1 TO GROUP hive;
GRANT SELECT ON DATABASE db1 TO ROLE role1;
GRANT ALL ON URI 'file:///path/to/hive-udfs.jar' TO ROLE role1;
SET ROLE role1;
SHOW CURRENT ROLES;
现在,如果我在beeline
中执行以下命令,我只看到DEFAULT
数据库和DB1
数据库哪个好
SHOW DATABASES;
当我使用代码执行相同操作时,通过创建SentryHiveMetaStoreClient
的对象并访问其方法(如getAllDatabases()
或getAllTables("table_name")
),就会出现问题。我在这里得到错误:
Caused by: java.lang.NullPointerException
at org.apache.sentry.binding.metastore.SentryHiveMetaStoreClient.getConf(SentryHiveMetaStoreClient.java:161)
at org.apache.sentry.binding.metastore.SentryHiveMetaStoreClient.getHiveAuthzBinding(SentryHiveMetaStoreClient.java:135)
at org.apache.sentry.binding.metastore.SentryHiveMetaStoreClient.filterDatabases(SentryHiveMetaStoreClient.java:98)
at org.apache.sentry.binding.metastore.SentryHiveMetaStoreClient.getAllDatabases(SentryHiveMetaStoreClient.java:65)
at my.data.in.hive.resources.MetadataResource.getDatabase(MetadataResource.java:46)
我面临的另一个问题是,当我创建一个HiveMetaStoreClient
的对象并访问它的方法,如getAllDatabases()
时,它向我展示了所有数据库丢弃了各种角色给出的特权概念,这很好。但是,如果我访问它的方法 - listRoleNames()
,我得到管理员和公众。这不应该给出我在beeline
中创建的角色的名称,即role1
吗?
可能是在Cloudera Manager中配置Sentry和Hive有一些问题,或者我可能做错了什么。关于如何使其发挥作用的任何想法?
关于你的问题
可能是配置Sentry和Hive有一些问题......
和给定的错误消息
Caused by: java.lang.NullPointerException
at org.apache.sentry.binding.metastore.SentryHiveMetaStoreClient ...
您可以检查绑定是否正确配置。起点可以是Configure Sentry to show/hide different databases for different users。
以上是关于无法将Sentry与Hive绑定的主要内容,如果未能解决你的问题,请参考以下文章