我有一个使用 sparkapplauncher 启动多个 Spark 应用程序的客户端。此客户端的日志使用 log4j.properties 文件进行记录。我希望这些启动的 spark 应用程序像普通的 spark 作业一样按照 log4j.configuration 写入日志,但是这些会不断被重定向到控制台。log4j 文件具有基于客户端应用程序设置的 applicationID 和标记的动态路径。
SparkLauncher spark = new SparkLauncher()
.setVerbose(true)
.setAppName("Spark Launcher Test")
.setJavaHome(javaHome)
.setSparkHome(sparkHome)
.setAppResource(appResource) // "/my/app.jar"
.setMainClass(mainClass) // "my.spark.app.Main"
.setMaster("local")
.setConf("spark.execution.log.base","/Users/b0219039/Desktop/client_logs/")
.setConf("spark.yarn.tags","source2")
.addFile(log4jfile)
.setPropertiesFile(log4jfile)
.setConf(SparkLauncher.DRIVER_MEMORY, "1g")
.setConf(SparkLauncher.EXECUTOR_MEMORY, "1g")
.setConf(SparkLauncher.EXECUTOR_CORES, "4")
.setConf(SparkLauncher.EXECUTOR_CORES, "4")
.setConf(SparkLauncher.EXECUTOR_EXTRA_JAVA_OPTIONS ,"-Dlog4j.configuration="+log4jfileclient)
.setConf(SparkLauncher.DRIVER_EXTRA_JAVA_OPTIONS ,"-Dlog4j.configuration="+log4jfileclient)
.addAppArgs(appArgs);