我创建了一个3节点Hadoop
群集,其中包含1个namenode和2个datanode。
我可以从Hive
shell执行读/写查询,但不能直接执行。
我发现了许多与此问题相关的建议和答案
在每一个建议中都提到了每个表的userX
的许可
但我不知道如何一劳永逸地为匿名用户设置权限。
为什么我在从直线或Java程序访问数据时让用户匿名?
我能够从beeline shell和使用Java JDBC连接读取数据 但我无法在表格中插入数据。
这是我的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
答案 0 :(得分:4)
Beeline语法是
beeline -n username -u "url"
我假设你错过了用户名。此外,除了hadoop用户之外,没有人能够对该表进行WRITE访问
如果您无法完全控制表权限,则可以尝试使用设置hive.exec.stagingdir
答案 1 :(得分:0)
如果连接URL中没有指定要连接的数据库,例如
JDBC:hive2:// hadoop01:10000 /默认
然后beeline连接到数据库 DEFAULT ,并在将数据插入表中时 - 首先将数据加载到默认数据库中的临时表,然后加载到实际表中。
因此,您还需要授予用户访问 DEFAULT 数据库的权限,或者您可以连接到您有权访问的数据库。
JDBC:hive2:// hadoop01:10000 / your_db