java通过jdbc连接hive数据库时,无法使用count()语句

5 篇文章 0 订阅

问题:

java通过jdbc连接hive数据库

可以运行

select * from tables

但是运行count(*) 报错:

select count(*) from tables

解决

参考1:zyl26的博客

出现原因可能是:

因为执行" select * from table; "并不需要启动mapreduce任务。而执行"select count(*) from table;"需要启动mapreduce任务。解决方法看执行过程的错误信息,我得到的信息是当前用户对于hdfs文件系统的/user文件夹没有写权限,只要开放权限,就可以解决问题。

但是具体怎么放开权限,博客中没有给出(尴尬)

没办法,去看hive日志寻找线索:
每个人的hive日志路径都不同,具体可以查看

vi $HIVE_HOME/conf/hive-log4j.properties

一般hive.log.dir 都是 /tmp/***
在这里插入图片描述

进入 hive.log.dir下的,打开 hive.log.对应日期,我打开的是 hive.log.2020-11-24

tail -200f hive.log.2020-11-24

查看报错为:

Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=anonymous, access=EXECUTE, inode="/stage/anonymous/.staging/job_1606096562668_0026":root:supergroup:drwx------

Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=anonymous, access=EXECUTE, inode="/stage/anonymous/.staging/job_1606096562668_0028":root:supergroup:drwx------

参考2:azhao_dn 的博客

原因的确是hdfs上文件夹的权限问题,故:

赋值权限:

hadoop fs -chmod -R 777 /tmp

hadoop fs -chmod -R 777 /stage

查看权限:
hdfs dfs -ls /

变为:
drwxrwxrwx - root supergroup 0 2020-10-23 14:27 /tmp

drwxrwxrwx - root supergroup 0 2020-10-23 14:27 /stage

再次运行,java连接hdfs,成功,完活!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值