Spark - UnsupportedOperationException:窗口操作

时间:2017-10-08 07:17:22

标签: scala apache-spark

我正在使用Spark 1.6。我有一个由6列的镶木地板文件生成的数据框。我正在尝试对数据帧中的行进行分组(partitionBy)和order(orderBy),以便稍后在数组中收集这些列。

我不确定在Spark 1.6中是否可以执行此操作,但在以下答案中,它们显示了如何完成此操作:

基于这些答案,我写了以下代码:

val sqlContext: SQLContext = new HiveContext(sc) 
val conf = sc.hadoopConfiguration
val dataPath = "/user/today/*/*"
val dfSource : DataFrame = sqlContext.read.format("parquet").option("dateFormat", "DDMONYY").option("timeFormat", "HH24:MI:SS").load(dataPath)

val w = Window.partitionBy("code").orderBy("date".desc)

import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions.row_number


val dfCollec = dfData.withColumn("collected", collect_list(struct("col1","col2","col3","col4","col5","col6")).over(w))

所以,我按照Ramesh编写的模式,我创建了基于Hive的sqlContext为Zero推荐。但我仍然收到以下错误:

  

java.lang.UnsupportedOperationException:   ' collect_list(struct(' col1,' col2,' col3,' col4,' col5,' col6))不是   窗口操作支持。           at org.apache.spark.sql.expressions.WindowSpec.withAggregate(WindowSpec.scala:191)           在org.apache.spark.sql.Column.over(Column.scala:1052)

我还缺少什么?

0 个答案:

没有答案