Wie man der letzten Zeile des DataFrame?
Ich hava ein DataFrame,das DataFrame hava zwei Spalte 'value' und 'timestamp', die 'timestmp' ist bestellt,ich möchte die Letzte Zeile des DataFrame,was soll ich tun?
dies ist mein input:
+-----+---------+
|value|timestamp|
+-----+---------+
| 1| 1|
| 4| 2|
| 3| 3|
| 2| 4|
| 5| 5|
| 7| 6|
| 3| 7|
| 5| 8|
| 4| 9|
| 18| 10|
+-----+---------+
dies ist mein code:
val arr = Array((1,1),(4,2),(3,3),(2,4),(5,5),(7,6),(3,7),(5,8),(4,9),(18,10))
var df=m_sparkCtx.parallelize(arr).toDF("value","timestamp")
dies ist mein erwartetes Ergebnis:
+-----+---------+
|value|timestamp|
+-----+---------+
| 18| 10|
+-----+---------+
- Würde
df.where($"timestamp" === max($"timestamp")
Arbeit? - Es doesnot Arbeit mit Exchange rangepartitioning(ts#7 ASC NULLS FIRST, 200)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde einfach
reduce
:Versuchen Sie dieses, es funktioniert für mich.
Ich würde einfach die Abfrage,
- Bestellungen Ihre Tabelle in absteigender Reihenfolge
- nimmt den 1. Wert aus dieser Bestellung
Wenn Ihr timestamp-Spalte ist einzigartig und wird (in aufsteigender Reihenfolge), dann gibt es folgende Möglichkeiten, um die Letzte Zeile
Ausgabe:
Wenn nicht, erstellen Sie eine neue Spalte mit dem index und wählen Sie den letzten index, wie unten
Ausgabe:
Der effizienteste Weg ist, um
reduce
Ihre DataFrame. Dies gibt Ihnen eine einzelne Zeile, die Sie konvertieren wieder zu einem DataFrame, aber es enthält nur 1 Datensatz, das macht nicht viel Sinn.Weniger effizient (es muss mischen) ist zwar kürzer ist diese Lösung:
Java: