Nicht sicher, ob Sie Problem mit Fensterfunktion behoben, wie Sie gerade n & n-1 Zeilen vergleichen wollen, und ich sehe nicht, Attribut, auf dem Sie gruppieren möchten die Daten. Für Ihre beschriebene Anforderung können Sie das Problem wie folgt beheben:
- Fügen Sie den Index mithilfe von zipWithIndex zur rdd hinzu.
- Erstellen Sie RDD für ungerade indizierte Zeilen.
- Erstellen Sie RDD für gerade Indexzeilen.
- Jetzt können Sie Ihre Logik auf zwei rdds.1
gelten das Arbeitsbeispiel Es folgt:
val spark = SparkSession
.builder
.appName("Example")
.master("local[*]")
.getOrCreate()
import spark.implicits._
val customers = spark.sparkContext.parallelize(List(("Alice", "2016-05-01", 50.00),
("Alice", "2016-05-03", 45.00),
("Alice", "2016-05-04", 55.00),
("Bob", "2016-05-01", 25.00),
("Bob", "2016-05-04", 29.00),
("Bob", "2016-05-06", 27.00)))
val custIndexed = customers.zipWithIndex().collect()
val custOdd = custIndexed.filter(record=>record._2%2!=0)
val custEven = custIndexed.filter(record=>record._2%2==0)
hat Ihr df enthält nur zwei Reihen? Wenn nicht, was genau möchten Sie angesichts der Daten beantworten? Bitte machen Sie mehr auf das Problem, da es pflanzliche Methoden zur Verfügung stehen –
Nein. Das ist nur ein Beispiel. Mein DS hat viele Zeilen. Wie ich oben erwähnt habe, muss ich zwei Daten von zwei Zeilen in einer Iteration in scala vergleichen und ihren Unterschied finden. –
Sie wollen "Fensterfunktionen". Siehe zum Beispiel https://databricks.com/blog/2015/07/15/introducing-window-functions-in-spark-sql.html –