Object Cache auf Spark-Executoren

ine gute Frage für Spark-Experte

Ich verarbeite Daten in einemmap operation (RDD). Innerhalb der Mapper-Funktion muss ich nach Objekten der Klasse @ sucheA zur Verarbeitung von Elementen in einer RDD.

Da dies auf Executoren UND Erstellung von Elementen des Typs @ durchgeführt wiA (das nachgeschlagen wird) ist eine teure Operation. Ich möchte diese Objekte auf jedem Executor vorab laden und zwischenspeichern. Wie geht das am besten?

Eine Idee ist es, eine Nachschlagetabelle zu senden, aber KlasseA ist nicht serialisierbar (keine Kontrolle über die Implementierung).

Eine weitere Idee ist, sie in ein Singleton-Objekt zu laden. Ich möchte jedoch steuern, was in diese Nachschlagetabelle geladen wird (z. B. möglicherweise unterschiedliche Daten in unterschiedlichen Spark-Jobs).

Idealerweise möchte ich angeben, was auf Executoren einmal geladen werden soll (einschließlich Streaming, damit die Nachschlagetabelle zwischen den Stapeln im Speicher bleibt), und zwar über einen Parameter, der auf dem Treiber während des Startvorgangs verfügbar ist Alle Daten werden verarbeitet.

ibt es eine saubere und elegante Art, dies zu tun, oder ist es unmöglich, dies zu erreiche

Antworten auf die Frage(6)

Ihre Antwort auf die Frage