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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage