2016-07-22 19 views
0

ich habe ein javaPairRDD „RDD“ genannt, seine Tupel wie folgt definiert:erhält die höchsten Schlüssel aus einem javaPairRDD

<Integer,String[]> 

i die höchste Taste max() Funktion extrahieren mag, aber es erfordert einen Komparator als Argument, würdest du mir bitte ein Beispiel geben, wie es geht, bitte !!!

example:

rdd={(22,[ff,dd])(8,[hh,jj])(6,[rr,tt]).....} 

nach rdd.max Anwendung (....), sould es mir geben:

int max_key=22; 

bitte helfen Sie mir ... in java bitte

Antwort

1

Ihr Ansatz isn Es funktioniert nicht, weil Tupel keine inhärente Ordnung haben.

Was Sie versuchen, ist das Maximum der Schlüssel zu bekommen. Der einfachste Weg, dies zu tun wäre, um die Schlüssel zu extrahieren und dann wie so den max bekommt

keyRdd = rdd.keys() 
max_key = keyRdd.max() 

Hinweis: Nicht einen javaSpark Benutzer, so dass die Syntax ein wenig weg sein kann.

+0

ok ich werde versuchen es danke – ham

+0

ich versuchte es ... javaRDD keyRDD = rdd.keys() aber das gleiche Problem, wenn ich max() habe es diese Fehler: die Methode max (Komparator ) im Typ javaRDD ist nicht anwendbar für die Argumente() – ham

0

sogar, dass @ Davids Antwort war so logisch, es hat nicht funktioniert für mich und es erfordert immer einen Komparator, und wenn ich einen Komparator verwendet, erschien es eine Ausnahme (nicht serialisierbar Operation, also ich versuchte mit Bestellung aber dieses Mal die Max-Taste war 1 (bedeutet die min in der Tat), so schließlich, ich benutzte den einfachsten Weg überhaupt, ich sortiert meine pairRDD Nachkommen dann extrahierte ich die erste() Tupel.

int max-key = rdd.first (). 1;