问题:
当通过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")