Czy spowoduje przetasowanie, jeśli rdd1
i rdd2
mają ten sam partycjoner?Czy łączenie współdzielonych RDD powoduje przetasowanie w Apache Spark?
Odpowiedz
Nie. Jeśli dwa urządzenia RDD mają tę samą partycję, join
nie spowoduje przetasowania. Można to zobaczyć w CoGroupedRDD.scala
:
override def getDependencies: Seq[Dependency[_]] = {
rdds.map { rdd: RDD[_ <: Product2[K, _]] =>
if (rdd.partitioner == Some(part)) {
logDebug("Adding one-to-one dependency with " + rdd)
new OneToOneDependency(rdd)
} else {
logDebug("Adding shuffle dependency with " + rdd)
new ShuffleDependency[K, Any, CoGroupCombiner](rdd, part, serializer)
}
}
}
Uwaga jednak, że brak shuffle, nie oznacza, że żadne dane nie będą musiały być przenoszone między węzłami. Jest możliwe, że dwa RDD mają ten sam partycjoner (są współdzielone), ale mają odpowiednie partycje zlokalizowane w różnych węzłach (nie mogą być zlokalizowane).
Ta sytuacja jest lepsza niż przetasowanie, ale należy o tym pamiętać. Kolokacja może poprawić wydajność, ale jest trudna do zagwarantowania.
Jeszcze raz dziękuję, w zasadzie to zignoruję i przeczytam kod źródłowy, aby uzyskać więcej. – zwb
Pytanie uzupełniające: czy są jakieś implementacje SQL Sparka (w tym oddzielne projekty spoza głównej dystrybucji), które wykorzystują współdzielenie partycji? – javadba
@javadba: Pewnie warto o to zapytać w osobnym pytaniu. http://spark.apache.org/docs/latest/sql-programming-guide.html mówi o 'spark.sql.shuffle.partitions', że _" konfiguruje liczbę partycji do użycia podczas tasowania danych dla złączeń lub agregacji "_ To dobry znak. –
- 1. Klasy typu Scalaz dla Apache Spark RDD
- 2. Apache Spark: Jak przekonwertować urządzenie Spark DataFrame na RDD z typem RDD [(Type1, Type2, ...)]?
- 3. Mnożenie macierzy w Apache Spark
- 4. Spark: RDD do listy
- 5. Połączyć wyniki z partii RDD z strumieniowaniem RDD w Apache Spark
- 6. Zalecenia Apache Spark ALS podejście
- 7. Spark RDD checkpoint na trwali/buforowane RDD przeprowadzasz DAG dwukrotnie
- 8. Apache Spark vs Apache Spark 2
- 9. Implementacja niestandardowego Spark RDD w Javie
- 10. Filtr oparty na innym RDD w Spark
- 11. Czy istnieje sposób na zmianę współczynnika replikacji RDD w Spark?
- 12. Jak sprawdzić, czy Spark RDD jest w pamięci?
- 13. Spark: Jak Unia listy <RDD> do RDD
- 14. Apache Spark vs Apache Ignite
- 15. Apache Spark vs. Apache Storm
- 16. Apache Spark: Jaka jest odpowiednia implementacja RDD.groupByKey() przy użyciu RDD.aggregateByKey()?
- 17. Jak zaimplementować "Łączenie krzyżowe" w Spark?
- 18. Korzystanie R w Apache Spark
- 19. Spark RDD - Mapowanie z dodatkowymi argumentami
- 20. Równość DataFrame w Apache Spark
- 21. Scala Spark: Podział kolekcji na kilka RDD?
- 22. Traktuj Spark RDD jak zwykły Seq
- 23. Konwersja RDD wektora w LabeledPoint za pomocą Scala - MLLib w Apache Spark
- 24. Apache Spark ALS Rekomendacja
- 25. Apache Drill kontra Spark
- 26. Elasticsearch + wydajność Apache Spark
- 27. Jak utworzyć zestaw danych Spark z RDD
- 28. Spark Streaming: Jak okresowo odświeżać buforowane RDD?
- 29. Tworzenie DataFrame Spark z RDD list
- 30. RDD Agregacja w iskrze
Czy możesz przepisać to pytanie, aby było bardziej zrozumiałe? Tylko dlatego, że RDD mają partycje na tych samych maszynach, nie oznacza to, że wszystkie klucze są zawsze na tej samej partycji na obu. O co więc pytasz? –
Całkowicie przepisałem to pytanie. Myślę, że teraz ma to sens, ale nie jestem pewien, co to znaczy @zwb. Tak naprawdę nie rozumiem oryginału. Jeśli chcesz, możesz cofnąć moją zmianę i zaktualizować pytanie. –
Dzięki, pochodzę z Chin, a mój angielski jest słaby, nie mogę wyrazić się bardzo jasno, a to, co przepisałeś, jest moim zmysłem. – zwb