Spark执行SQL时出现mismatched input 'GROUP'报错如何解决
问题解决说明
错误产生原因
- 该报错由SQL子句书写顺序不符合语法规范导致:标准SQL语法要求
HAVING子句必须放在GROUP BY子句之后,HAVING的作用是对GROUP BY聚合计算后的结果做过滤,你的代码将HAVING写在了GROUP BY前面,Spark SQL解析器完成HAVING子句解析后默认语句已经结束,后续出现GROUP关键字就会触发语法匹配错误。
修复方案
调整GROUP BY和HAVING的先后顺序即可,修正后代码如下:
spark.sql("SELECT state, AVG(gestation_weeks) " "FROM natality " "WHERE state is not null " "GROUP BY state " "HAVING AVG(gestation_weeks) > (SELECT AVG(gestation_weeks) FROM natality)").show()
内容的提问来源于stack exchange,提问作者Sergi Solé
相关产品推荐
相关产品推荐

