报错类型: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引擎。
hive.execution.engine spark hive.spark.client.connect.timeout 10000ms
方法二:时间字段使用Date类型。
Hive默认使用的是MR引擎,所以注释掉spark引擎不会有影响,但是运行较慢。如果是自己练习,更换引擎即可,如果是项目,时间字段还是使用Date类型较好。



