Jaki jest najlepszy sposób na zwrócenie maksymalnego wiersza (wartości) powiązanego z każdym unikalnym kluczem w iskrowym RDD?Uzyskaj maksymalną wartość dla każdego klucza w Spark RDD
Używam Pythona i próbowałem Math max, mapowanie i zmniejszanie o klucze i agregaty. Czy istnieje skuteczny sposób na zrobienie tego? Prawdopodobnie UDF?
mam w formacie RDD:
[(v, 3),
(v, 1),
(v, 1),
(w, 7),
(w, 1),
(x, 3),
(y, 1),
(y, 1),
(y, 2),
(y, 3)]
I muszę wrócić:
[(v, 3),
(w, 7),
(x, 3),
(y, 3)]
Krawaty może powrócić pierwsza wartość lub losowo.
można dać sposób to zrobić w Javie, jak również? Używam java i szukam dokładnie tego samego. – tsar2512
@ tsar2512 Z Java 8 może to działać: 'new JavaPairRDD (rdd) .reduceByKey ((v1, v2) -> Math.max (v1, v2));' –
dziękuję za odpowiedź, niestety używam Java 7 - nie pozwala na funkcje lambda. Zazwyczaj trzeba pisać anonimowe funkcje. Czy możesz dać mi znać, jakie będzie rozwiązanie w Java 7? Podejrzewam, że powinna działać prosta funkcja komparatora! – tsar2512