报错类型:Error: Error while processing statement: FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Spark job failed during runtime. Please check stacktrace for the root cause. (state=42000,code=3)。
翻译过来是:spark作业在运行时失败。请检查stacktrace以了解根本原因。
这种报错太笼统,不好找具体哪里出了问题,如果想看可以去spark日志中看一下。
原因:使用Spark引擎+使用datediff函数(在子查询且开窗使用)+时间字段使用的是String类型。
解决:方法一:注释掉Hive中配置中 hive-site.xml 中使用的spark引擎。
<property>
<name>hive.execution.engine</name>
<value>spark</value>
</property>
<property>
<name>hive.spark.client.connect.timeout</name>
<value>10000ms</value>
</property>
方法二:时间字段使用Date类型。
Hive默认使用的是MR引擎,所以注释掉spark引擎不会有影响,但是运行较慢。如果是自己练习,更换引擎即可,如果是项目,时间字段还是使用Date类型较好。