Я отправляю свои задания в искровой кластер (с YARN) программно с помощью Java-приложения и Spark Launcher (запуская задание с помощью startApplication(), а не запуска()). Мне нравится иметь весь вывод журнала, который создается на stdout и stderr программой запуска при выполнении приложения Java, в файле, к которому я могу получить доступ с помощью java-приложения. Я не хочу менять глобальную конфигурацию spark-log-config, мне нужно динамическое решение, которым я могу управлять в зависимости от изменения переменных из java-приложения при каждом отдельном выполнении.
Следуя документации это должно быть возможно с помощью параметра CHILD_PROCESS_LOGGER_NAME. Поэтому я определил java.util.logging.logger, например здесь, и добавил этот код в мою программу запуска заданий:
SparkLauncher.setConfig(SparkLauncher.CHILD_PROCESS_LOGGER_NAME, "MyLog");
Но это не работает, лог-файл пустой. Я также пробовал другие методы, такие как setConf(...) или addSparkArg(...), но безуспешно. Что я сделал не так? Или мне лучше использовать log4j, сделать пользовательскую конфигурацию и отдать ее каким-либо образом в лаунчер? Если да, то как это сделать в моем java-приложении?