pozwala rozpocząć z podanym RDD.
val sampleRDD = sc.parallelize(Array((1,2),(3,4),(3,6)))
teraz flatMapValues
metoda kombinacji flatMap
i mapValues
.
To, co robi mapValues
, to odwzorowywanie wartości przy zachowaniu kluczy. przykład,
jeśli nie sampleRDD.mapValues(x => x to 5)
, to daje
Array((1,Range(2, 3, 4, 5)), (3,Range(4, 5)), (3,Range()))
zawiadomienie tutaj, że za parę klucz-wartość (3, 6)
, produkuje (3,Range())
od 6 to 5 does not produce a non-empty collection of values.
co flatMap
robi to „przerwy "kolekcje do elementów kolekcji. Możesz wyszukać dokładniejszy opis płaskiej mapy online, takiej jak here i here.
Na przykład
podane val rdd2 = sampleRDD.mapValues(x => x to 5)
, jeśli robimy rdd2.flatMap(x => x)
, dostaniesz
Array((1,2),(1,3),(1,4),(1,5),(3,4),(3,5)).
Oznacza to, że dla każdego elementu w kolekcji w każdym kluczu tworzymy (key, element)
parę.
Zauważ również, że (3, Range())
nie tworzy żadnych dodatkowych par kluczy, ponieważ sekwencja jest pusta.
teraz łącząc flatMap
i mapValues
, otrzymujesz flatMapValues
.
Świetne wyjaśnienie. Bardzo pomocne. – maddie