2017-12-29 10 views
0

Ich lese über Partial manuelle Broadcast-Hash-Join, die beim Beitritt Pair RDD in Spark verwendet werden kann. Dies wird empfohlen, wenn ein Schlüssel so groß ist, dass er nicht auf eine einzelne Partition passen kann. In diesem Fall können Sie countByKeyApprox auf der großen RDD verwenden, um eine ungefähre Vorstellung davon zu erhalten, welche Schlüssel am besten von einer Übertragung profitieren würden. Sie filtern dann die kleinere RDD für nur diese Schlüssel und sammeln das Ergebnis lokal in einer HashMap. Mit sc.broadcast können Sie die HashMap senden, sodass jeder Worker nur eine Kopie hat und den Join manuell gegen die HashMap ausführt. Mit derselben HashMap können Sie dann Ihre große RDD filtern, um die große Anzahl von doppelten Schlüsseln nicht einzubeziehen, und Ihre Standardverbindung durchführen, indem Sie sie mit dem Ergebnis Ihrer manuellen Verbindung verbinden. Diese Herangehensweise ist ziemlich kompliziert, kann Ihnen jedoch erlauben, stark verzerrte Daten zu verarbeiten, die Sie sonst nicht verarbeiten könnten.Verwendung von countByKeyApprox() für partiellen manuellen Broadcast-Hash-Join

Die Frage bezieht sich auf die Verwendung von countByKeyApprox (langes Timeout). Was ist die Einheit dieses Timeouts? Wenn ich countByKeyApprox (10) schreibe, bedeutet das, dass es 10 Sekunden oder 10 ms oder etwas anderes wartet?

Antwort

Verwandte Themen