2016-05-30 7 views
0

In Spark, kann ich jedochFunken parallelize und Partition Schlüssel

sc.parallelize([(0, 0), (1, 1), (0, 2), (1, 3), (0, 4), (1, 5)], 2).partitionBy(2) 

tun, das erste verteilt die Daten über die Knoten des Clusters, nur um dann mischt es wieder. Gibt es eine Möglichkeit, per Schlüssel sofort zu partitionieren, wenn die Daten vom Treiberprogramm eingegeben werden?

+0

Es ist möglich, Datenbewegungen zu vermeiden, indem zuerst lokale Daten organisiert werden, aber es sieht wie ein künstliches Problem aus. Sie sollten niemals 'parallelize' verwenden, um Daten zu übergeben, die groß genug sind, damit ein nachfolgendes Shuffle ein Problem darstellt. – zero323

Antwort

0

In dem von Ihnen bereitgestellten Beispiel merkt Spark die Partitionierung der Daten nicht, bis Sie dies explizit über partitionByKey() angeben.

Aber Spark kann die natürliche Partitionierung der Daten nutzen, wenn sie bereits in der richtigen Weise organisiert ist. Zum Beispiel

Die Art der Daten, des Dateisystems usw. beeinflusst die Partitionierung in Spark.

Verwandte Themen