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