問題:
當通過sparkSQL執行 ROW_NUMBER() OVER()開窗函數的時候,報了這個錯,具體sql如下
select data from (SELECT *, ROW_NUMBER() OVER (partition by id ORDER BY time,data)num FROM operate_test)a where num=1
但是報了以下的錯誤
[1.29] failure: failure: ``)'' expected but `(' found
解決辦法
翻閱資料,瞭解到,在2.0+的版本中,可以通過SQLContext直接執行sparkSql,但是如果spark的版本<=1.6,並且>=1.4 那麼執行的主題應該是 HiveContext
HiveContext創建方法如下,其中sc是SparkContext對象
import org.apache.spark.sql.hive.HiveContext
val sqlContext = new HiveContext(sc)
sqlContext.sql("xxx")