failure: ``union'' expected but `(' found

341 阅读1分钟

问题:

Spark 1.5.1 本地使用 SQLContext 报错:

failure: ``union'' expected but `(' found

这个报错在位置在开窗函数执行语句处。

原因及解决方法:

从 Spark 2.0 开始,Spark SQL 才本地实现了开窗函数(SPARK-8641),在 Spark 2.0 之前要使用开窗函数,必须使用 HiveContext 去操作。

同时,开窗函数是从 Spark 1.4 引进的,所以当 Spark 版本小于 1.4 的话是没法使用开窗函数的。

所以看如果你的 Spark 版本小于 1.4 则没法用开窗函数,如果在 1.4 到 2.0 之间(Spark 在 1.6.x 之后就直接跳到 2.0 版本了)就使用 HiveContext 去使用开窗函数,如果是 2.0 之后的版本可以直接使用 SQLContext。