Verwenden von Fensterfunktionen in Spark
Ich versuche, rowNumber in Spark-Datenrahmen zu verwenden. Meine Abfragen funktionieren erwartungsgemäß in der Spark-Shell. Aber wenn ich sie in Eclipse ausschreibe und ein Glas kompiliere, stoße ich auf einen Fehler
16/03/23 05:52:43 ERROR ApplicationMaster: User class threw exception:org.apache.spark.sql.AnalysisException: Could not resolve window function 'row_number'. Note that, using window functions currently requires a HiveContext;
org.apache.spark.sql.AnalysisException: Could not resolve window function 'row_number'. Note that, using window functions currently requires a HiveContext;
Meine Anfragen
import org.apache.spark.sql.functions.{rowNumber, max, broadcast}
import org.apache.spark.sql.expressions.Window
val w = Window.partitionBy($"id").orderBy($"value".desc)
val dfTop = df.withColumn("rn", rowNumber.over(w)).where($"rn" <= 3).drop("rn")
Ich verwende HiveContext nicht, während die Abfragen in der Spark-Shell ausgeführt werden. Nicht sicher, warum es einen Fehler zurückgibt, wenn ich das selbe wie eine JAR-Datei laufen lasse. Außerdem führe ich die Skripte auf Spark 1.6.0 aus, wenn das hilft. Hat jemand ein ähnliches Problem?