使用直线 shell 拒绝匿名用户的 Hive 权限
Hive permission denied for user anonymous using beeline shell
我创建了一个具有 1 个名称节点和 2 个数据节点的 3 节点 Hadoop
集群。
我可以从 Hive
shell 执行 read/write 查询,但不能直线。
我发现了很多与此问题相关的建议和答案。
在每个建议中都提到为每个人 table.
授予 userX
的权限
但是我不知道如何一劳永逸地为匿名用户设置权限。
为什么我在从直线或 Java 程序访问数据时让用户匿名?
我能够从直线 shell 和使用 Java JDBC 连接读取数据。
但是我无法在 table.
中插入数据
这是我的 jdbc 连接:jdbc:hive2://hadoop01:10000.
以下是我在插入请求时遇到的错误:
权限被拒绝:user=anonymous, access=WRITE, inode="/user/hive/warehouse/test_log/.hive-staging_hive_2017-10-07_06-54-36_347_6034469031019245441-1":hadoop:supergroup:drwxr-xr-x
直线语法是
beeline -n username -u "url"
我假设您遗漏了用户名。此外,无论如何,除了 hadoop 用户之外,没有人具有对该 table 的 WRITE 访问权限
如果您不能完全控制 table 权限,您可以尝试使用设置 hive.exec.stagingdir
重新定位暂存目录
如果连接中没有指定数据库URL进行连接,喜欢
jdbc:hive2://hadoop01:10000/default
然后beeline连接到数据库DEFAULT,同时将数据插入table——首先数据被加载到一个临时的table中默认数据库然后加载到实际table.
因此,您还需要授予用户访问 DEFAULT 数据库的权限,或者您可以连接到您有权访问的数据库。
jdbc:hive2://hadoop01:10000/your_db
我创建了一个具有 1 个名称节点和 2 个数据节点的 3 节点 Hadoop
集群。
我可以从 Hive
shell 执行 read/write 查询,但不能直线。
我发现了很多与此问题相关的建议和答案。
在每个建议中都提到为每个人 table.
授予 userX
的权限
但是我不知道如何一劳永逸地为匿名用户设置权限。
为什么我在从直线或 Java 程序访问数据时让用户匿名?
我能够从直线 shell 和使用 Java JDBC 连接读取数据。
但是我无法在 table.
这是我的 jdbc 连接:jdbc:hive2://hadoop01:10000.
以下是我在插入请求时遇到的错误:
权限被拒绝:user=anonymous, access=WRITE, inode="/user/hive/warehouse/test_log/.hive-staging_hive_2017-10-07_06-54-36_347_6034469031019245441-1":hadoop:supergroup:drwxr-xr-x
直线语法是
beeline -n username -u "url"
我假设您遗漏了用户名。此外,无论如何,除了 hadoop 用户之外,没有人具有对该 table 的 WRITE 访问权限
如果您不能完全控制 table 权限,您可以尝试使用设置 hive.exec.stagingdir
如果连接中没有指定数据库URL进行连接,喜欢
jdbc:hive2://hadoop01:10000/default
然后beeline连接到数据库DEFAULT,同时将数据插入table——首先数据被加载到一个临时的table中默认数据库然后加载到实际table.
因此,您还需要授予用户访问 DEFAULT 数据库的权限,或者您可以连接到您有权访问的数据库。
jdbc:hive2://hadoop01:10000/your_db