説明データフレームdf
SparkとSparkSQL:ウィンドウ関数を模倣する方法は?
id | date
---------------
1 | 2015-09-01
2 | 2015-09-01
1 | 2015-09-03
1 | 2015-09-04
2 | 2015-09-04
私はランニングカウンタまたはインデックスを作成したいを考える
、
同じIDでグループ化された- し、そのグループに日付順に並べ替えられ
- 、
したがって、
id | date | counter
--------------------------
1 | 2015-09-01 | 1
1 | 2015-09-03 | 2
1 | 2015-09-04 | 3
2 | 2015-09-01 | 1
2 | 2015-09-04 | 2
これは私がウィンドウ機能で達成できるものです。
val w = Window.partitionBy("id").orderBy("date")
val resultDF = df.select(df("id"), rowNumber().over(w))
残念ながら、スパーク1.4.1は、通常のデータフレームのためにウィンドウ関数をサポートしていません。
org.apache.spark.sql.AnalysisException: Could not resolve window function 'row_number'. Note that, using window functions currently requires a HiveContext;
質問私はせずに、現在のスパーク1.4.1で上記の計算を達成するにはどうすればよい
- ウィンドウ関数を使う?
- 通常のデータフレームのウィンドウ機能はいつSparkでサポートされますか?
ありがとう!
データフレームとSQLを使用する必要がありますか、RDDを使用できますか?これは、groupByメソッドでは非常に簡単です。 –
@ KirkBroadhurst:RDDも大丈夫でしょう。ちょっとしたコードの抜粋であなたのアイデアをスケッチしてください。 SparkSQLの時点で、私は現在どのようにこれを行う方法を参照してください:あなたはアイデアがありますか? –