java.sql.SQLException: java.lang.RuntimeException: serious problem

场景: spark on hive 使用sparksql查询hive的ORC表。

select * from  evchk_ods.ODS_CAR_DRIVE_INFO_P_D

报错如下:

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)
    at com.xxxxx.xxxxx.datasource.dao.impl.AbstractDataSource.executeQuery(AbstractDataSource.java:465)
    at com.xxxxx.xxxxx.datasource.dao.impl.AbstractDataSource.executeOneSql(AbstractDataSource.java:386)
    at com.xxxxx.xxxxx.datasource.dao.impl.AbstractDataSource.sqlExecute(AbstractDataSource.java:333)
    at com.xxxxx.xxxxx.datasource.dao.impl.AbstractDataSource.sqlExecute(AbstractDataSource.java:319)
    at com.xxxxx.xxxxx.web.thread.QueryTask.run(QueryTask.java:91)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:748)

 度娘一下相关资料,解决方案如下三种:

  1. set hive.fetch.task.conversion=none;   (失败)
  2. set hive.exec.orc.split.strategy=BI;    (失败)
  3. set hive.execution.engine=mr;   (成功,但是不符合本意。本来需求就是用sparksql,这里设置了执行引擎为MR

最终解决方案:

在hive的配置文件hive-site.xml增加配置如下:

   
      hive.orc.compute.splits.num.threads
      500
   

然后用修改后的hive-site.xml 重新覆盖spark配置目录下的hive-site.xml文件。

或者直接在spark配置目录下的hive-site.xml中增加上述配置,然后重启hive和spark。

最后成功执行sql,查询数据和插入表。

 

你可能感兴趣的:(hive,spark)