2016-07-09 9 views
1

Die folgenden Text Bedeutung ist aus Kapitel 3 Learning Sparkdas Objekt serialisiert die die Funktion enthält -

Ein Problem für aufpassen beim Passieren Funktionen versehentlich das Objekt Serialisierung enthält die Funktion. Wenn Sie eine Funktion übergeben, die das Mitglied eines Objekts ist, oder Referenzen auf Felder in einem Objekt (z. B. self.field) enthält, sendet Spark das gesamte Objekt an Worker-Knoten, die viel größer sein können als das Bit von Informationen Sie benötigen (siehe Beispiel 3-19). Manchmal kann dies auch dazu führen, dass Ihr -Programm fehlschlägt, wenn Ihre Klasse Objekte enthält, die Python nicht herausfinden kann.

enter image description here

Bitte erläutern, welche Botschaft der Autor hier zu vermitteln versuchen.

+0

Ehrlich gesagt denke ich, der Autor ist falsch, weil sie nicht verstehen, wie Variablen in Python funktionieren. Im angeblich sicheren Beispiel ist 'query' nur ein anderer Name für' self.query', also wäre das Ergebnis dasselbe. – martineau

Antwort

1

Mitarbeiter in verteilten Systemen haben keinen gemeinsamen Speicher, daher muss jeder Mitarbeiter eine Kopie aller Funktionen, Daten usw. haben, die für die Ausführung des Codes erforderlich sind. Wenn Sie also Anrufe tätigen, die verteilt werden sollen, sollten Sie versuchen, diesen Overhead zu reduzieren, indem Sie sicherstellen, dass Sie keine Daten kopieren, die der Mitarbeiter nicht wirklich benötigt.

In diesem Beispiel ist rdd.filter eine vektorisierte (funktionale) Operation, die auf mehrere Worker verteilt werden kann. Es braucht ein einziges Argument - eine Funktion. Der Autor warnt Sie, dass, wenn diese Funktion auf ein Feld (Attribut) eines beliebigen Objekts verweist (ist der interne Term, den Objekte verwenden, um sich selbst zu referenzieren, so dass Sie grundsätzlich das Objekt referenzieren, das die filter Methoden in seiner eigenen Methode aufruft) gesamtes Objekt (Instanz) wird in den Worker kopiert, nicht nur eine leichtgewichtige Funktion. Und das Objekt kann viele Attribute enthalten, die auf viele Daten verweisen.

Verwandte Themen