Computing Rang einer Zeile
Ich möchte Ranges Benutzer-id basiert auf einem Feld. Für den gleichen Wert des Feldes, Rang sollte gleich sein. Dass Daten in Hive-Tabelle.
z.B.
user value
a 5
b 10
c 5
d 6
Rank
a - 1
c - 1
d - 3
b - 4
Wie kann ich das tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es möglich, zu verwenden
rank
Fenster-Funktion entweder mit einem DataFrame API:- oder raw-SQL:
aber es ist äußerst ineffizient.
Können Sie auch versuchen, RDD-API, aber es ist nicht ganz einfach. Zunächst können konvertieren DataFrame zu RDD:
Als Nächstes müssen wir berechnen Reihen pro partition:
offset für jede partition
und die letzten Reihen:
Window
definition ohnepartitionBy
mischt alles zu einer einzigen partition. Mit der heutigenDaset
API -, Sie umschreiben könnteRDD
version, obwohl.