【发布时间】:2018-03-08 04:50:40
【问题描述】:
我正在使用 Java 应用程序和 Spark Launcher(使用 startApplication(),而不是 launch() 启动作业)以编程方式将我的作业提交到 spark-cluster(使用 YARN)。 我喜欢将所有日志输出(在执行 Java 应用程序时由启动器在 stdout 和 stderr 上生成)放在一个文件中,我可以使用 java-app 访问该文件。我不想更改全局 spark-log-config,我想要一个动态解决方案,我可以根据每次执行时 java-app 中更改的变量来控制它。
在documentation 之后,这应该可以通过使用 CHILD_PROCESS_LOGGER_NAME 选项来实现。所以我定义了一个类似here 的 java.util.logging.logger 并将这段代码添加到我的作业启动器中:
SparkLauncher.setConfig(SparkLauncher.CHILD_PROCESS_LOGGER_NAME, "MyLog");
但这不起作用,日志文件是空的。我还尝试了 setConf(...) 或 addSparkArg(...) 等其他方法,但均未成功。我做错了什么? 还是我应该更好地使用 log4j,进行自定义配置,并以任何方式将其提供给启动器?如果是,如何在我的 java-app 中执行此操作?
【问题讨论】:
标签: java apache-spark logging spark-launcher