Ich teste meine Spark-Streaming-Anwendung, und ich habe mehrere Funktionen in meinem Code: - einige von ihnen arbeiten auf einem DStream [RDD [XXX]], einige von ihnen auf RDD XXX] (nachdem ich DStream.foreRADD gemacht habe).Spark-Streaming-Anwendung und kafka log4j Appender Ausgabe
Ich benutze Kafka log4j Appender, um Geschäftsfälle zu protokollieren, die innerhalb meiner Funktionen auftreten, die auf beiden DStream [RDD] & RDD es Selbst arbeiten.
Aber Daten werden nur dann an Kafka angehängt, wenn von Funktionen, die auf RDD funktionieren -> es funktioniert nicht, wenn ich Daten an kafka von meinen Funktionen, die auf DStream arbeiten, anhängen will.
Kennt jemand Grund zu diesem Verhalten?
Ich arbeite an einer einzigen virtuellen Maschine, wo ich Spark & Kafka habe. Ich reiche Anwendungen ein, die Spark submit verwenden.
EDITED
Eigentlich habe ich das Teil des Problems herausgefunden. Daten werden nur von dem Teil des Codes, der in meiner Hauptfunktion liegt, an Kafka angehängt. All der Code, der außerhalb meines Hauptbereichs liegt, schreibt keine Daten in kafka.
Im Haupt erklärte ich den Logger wie folgt aus:
val kafkaLogger = org.apache.log4j.LogManager.getLogger("kafkaLogger")
Während außerhalb meiner Haupt, ich mag es zu erklären hatte:
@transient lazy val kafkaLogger = org.apache.log4j.LogManager.getLogger("kafkaLogger")
, um zu vermeiden Ausgaben Serialisierung.
Der Grund könnte hinter JVM Serialisierung Konzept sein, oder einfach, weil Arbeiter sehen nicht die log4j Konfigurationsdatei (aber meine log4j-Datei ist in meinem Quellcode, in Ressourcenordner)
Edited 2
Ich habe versucht, log4j Datei an Executoren zu senden, aber nicht funktioniert. Ich habe versucht:
log4j-Datei in --files Befehl senden Funken einreichen
Einstellung:
--conf "spark.executor.extraJavaOptions =-Dlog4j.configuration=file:/home/vagrant/log4j.properties"
inEinstellung log4j.properties Datei in --driver-Klasse Funken einreichen -Pfad der Funke senden ...
Keine dieser Option funktionierte.
Jeder hat die Lösung? Ich sehe keine Fehler in meinem Fehlerprotokoll ..
Danke
Sie sollten auf jeden Fall etwas Code veröffentlichen, damit wir helfen können. –
@YuvalItzchakov, Ich habe gerade die Frage bearbeitet –