问题
今天一大早给运营小妹用sparksql跑埋点数据,但是sparksql却给我抛了这么一个东西。
select
source,
version,
count(1) as num
from app.app_record
group by
source,
version
**java.sql.SQLException: java.lang.RuntimeException: serious problem
at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:279)
at org.apache.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:375)……………………一下省略xxxx个字
**
刚报这个错误,在下立马懵逼了,上面的代码在hive里面可以完美运行,但是医用sparksql读hive的数据就会出现上面的问题。
为了维持在下在运营小妹心中的英勇、伟岸的形象,我先以数据量太大,需要跑很久的理由将运营小妹支开,然后疯狂百度,最后找到了三种方法。
寻找解决办法
1.set hive.fetch.task.conversion=none; (失败)**
2.set hive.exec.orc.split.strategy=BI;(失败)**
3.将存储格式从orc改成parquet (不敢)
经过几番折腾(百度,谷歌)然后在下在对应的hdfs目录下找到了一个空的文件夹,是当时在下做测试的,将测试数据删除留下的,其所有用户是在下操作hive表是留下的data用户,当时我就猜想**(有病乱投医)**可能会和这个空文件有关,如果删除了这个空文件应该OK。
最终解决方法
删除hdfs上对应的空文件目录
hadoop fs -rm -r /usr/local/hive/warehouse/你的对应的空文件夹的目录
所有问题迎刃而解,运营小妹要的数据很快也给她了,嘴里喝到运营小妹给的阿萨姆奶茶时,在下心想,“运营小妹其实也挺不错的!”
(又是有病乱投医,瞎几把搞定的(笑哭……))