在Amazon EMR叢集上將apache-spark loggin傳送到redis / logstash的最佳方式

我在Amazon EMR叢集上提交作業.我希望將所有spark日誌記錄傳送到redis / logstash.在EMR下配置spark的正確方法是什麼?

>保留log4j:新增一個引導操作來修改/home/hadoop/spark/conf/log4j.properties以新增一個appender?但是,這個文件已經包含很多東西,並且是hadoop conf文件的符號連結.我不想過多地使用它,因為它已經包含了一些rootLogger.哪個appender會做得最好? ryantenney / log4j-redis-appender logstash / log4j-jsonevent-layout OR pavlobaron / log4j2redis?

>遷移到slf4j logback:從spark-core中排除slf4j-log4j12,新增log4j-over-slf4j …並使用帶有com.cwbase.logback.RedisAppender的logback.xml?看起來這會帶來依賴性問題.它會隱藏已在log4j.properties中定義的log4j.rootLoggers嗎?

>我錯過了什麼?

你對此有何看法?

更新

看起來我無法獲得第二種選擇.執行測試很好但是使用spark-submit(使用–conf spark.driver.userClassPathFirst = true)總是會遇到可怕的“在類路徑上檢測到log4j-over-slf4j.jar和slf4j-log4j12.jar”,搶佔StackOverflowError.“