我有一个名为df的数据框,名为employee_id.我在做:
df.registerTempTable("d_f") val query = """SELECT *,ROW_NUMBER() OVER (ORDER BY employee_id) row_number FROM d_f""" val result = Spark.getsqlContext().sql(query)
但是得到以下问题.有帮助吗?
[1.29] failure: ``union'' expected but `(' found SELECT *,ROW_NUMBER() OVER (ORDER BY employee_id) row_number FROM d_f ^ java.lang.RuntimeException: [1.29] failure: ``union'' expected but `(' found SELECT *,ROW_NUMBER() OVER (ORDER BY employee_id) row_number FROM d_f
解决方法
Spark 2.0
Spark 2.0引入了窗口函数的本机实现(SPARK-8641),因此不再需要HiveContext.然而,与窗口函数无关的类似错误仍然可归因于sql解析器之间的差异.
火花< = 1.6 Window 1.4.0中引入了窗口函数,需要HiveContext
才能工作. SQLContext
在这里不起作用.
确保使用Spark> = 1.4.0并创建HiveContext:
import org.apache.spark.sql.hive.HiveContext val sqlContext = new HiveContext(sc)