Я пытаюсь получить искру, чтобы распечатать план sql на каждой итерации, через которую проходит катализатор, я использую искру 2.3.1 и смотрю на источник, который выполняет журнал трассировки на каждой успешной итерации:
https://github.com/apache/spark/blob/78801881c405de47f7e53eea3e0420dd69593dbd/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/rules/RuleExecutor.scala#L93
Я пытаюсь настроить мои настройки так, чтобы эти журналы во время отладки переходили в отдельный файл, чтобы я мог лучше понять, что происходит.Просматривая документацию, кажется, что следующие log4j.properties должны работать:
log4j.rootCategory=INFO, file
log4j.logger.org.apache.spark.sql.hive=TRACE, optimizer
#, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c (IT) - %m%n
#, log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=it.log
log4j.appender.file.MaxFileSize=200MB
log4j.appender.file.MaxBackupIndex=2
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L (l4j) - %m%n
#, optimizer debug file
log4j.appender.optimizer=org.apache.log4j.RollingFileAppender
log4j.appender.optimizer.File=optimizer.log
log4j.appender.optimizer.MaxFileSize=200MB
log4j.appender.optimizer.MaxBackupIndex=2
log4j.appender.optimizer.layout=org.apache.log4j.PatternLayout
log4j.appender.optimizer.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L (l4j) - %m%n
Если я пошагово выполняю код, я могу найти ссылки на имя файла, которое я указал в регистраторе, используемом вRuleExecutor, однако файл 'optimizer.log' никогда не создается, хотя выглядит так, как будто он записывается.Журнал на самом деле все еще появляется в stdout.
Что я делаю не так?