beeline连接HIVE默认登入使用anonymous用户权限不够

在用beeline连接hive查询表数据时,出现错误权限不够

ERROR : Job Submission failed with exception 'org.apache.hadoop.security.AccessControlException
(Permission denied: user=anonymous, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
	at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.checkFsPermission(DefaultAuthorizationProvider.java:279)
	at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.check(DefaultAuthorizationProvider.java:260)
	at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.check(DefaultAuthorizationProvider.java:240)
	at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.checkPermission(DefaultAuthorizationProvider.java:162)

可以看出默认登入使用的是anonymous用户,而对应的表在hdfs上的目录为:

drwxr-xr-x   - hdfs  supergroup

总的来说,出除了hdfs用户,其他用户对文件读写可能都会有问题,就算使用root用户上传文件,也会报权限不够。通常的办法是改目录权限:

hdfs dfs  chmod 777 ***

但是不可能每次在hive shell中创建表生成目录,都要手动改目录权限。所以,最直接的办法是改变beeline登入的用户为hdfs,好在beeline提供了 -n 用户名参数 ,可以执行:

beeline -n hdfs -u jdbc:hive2://localhost:10000

于是beeline就以hdfs用户登入,读写数据权限问题会少很多。但需要注意一点,beeline命令如果写成两行:

beeline -n hdfs
!connect jdbc:hive2://localhost:10000

这样分两步执行,-n 参数是不生效的。
另外建议:凡是涉及hdfs的操作都用hdfs用户来进行

原文连接:https://blog.csdn.net/Ntozot/article/details/83031124

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值