Apache spark 过度写入log4j属性以过滤数据块中的日志

Apache spark 过度写入log4j属性以过滤数据块中的日志,apache-spark,log4j,databricks,Apache Spark,Log4j,Databricks,我正在Databricks集群上运行我的作业。对于每个作业运行,都会生成spark驱动程序日志,其中包括stdout、sterr和log4j文件。我在代码中也使用了相同的log4j库来记录日志&因此我的日志作为驱动程序log4j日志文件的一部分打印出来。 问题是大多数驱动程序log4j文件都包含由databricks或spark生成的日志,因此搜索我的项目相关日志变得非常困难。我确实在我的日志中添加了一个前缀,使我的搜索更容易一些,但仍然不够方便 Log4j文件如下所示- 19/12/03 1

我正在Databricks集群上运行我的作业。对于每个作业运行,都会生成spark驱动程序日志,其中包括stdout、sterr和log4j文件。我在代码中也使用了相同的log4j库来记录日志&因此我的日志作为驱动程序log4j日志文件的一部分打印出来。

问题是大多数驱动程序log4j文件都包含由databricks或spark生成的日志,因此搜索我的项目相关日志变得非常困难。我确实在我的日志中添加了一个前缀,使我的搜索更容易一些,但仍然不够方便

Log4j文件如下所示-

19/12/03 15:45:30 INFO ScalaDriverWrapper: setupRepl:ReplId-54fb1-f8f43-0a75c-a: finished to load
19/12/03 15:45:30 WARN ScalaDriverLocal: User entity information is incomplete, missing userId,user.
19/12/03 15:45:30 INFO ProgressReporter$: Added result fetcher for 6123522818505864650_7748591541637124368_job-186-run-1-action-185
19/12/03 15:45:35 INFO MY_LOGS: Entry Point Params : 
19/12/03 15:45:35 INFO MY_LOGS: Methods 1 begins
19/12/03 15:45:35 INFO MY_LOGS: Applying some pre-checks
19/12/03 15:45:36 INFO DAGScheduler: Got job 0 (collect at webConfig.scala:27) with 1 output partitions
19/12/03 15:45:36 INFO DAGScheduler: Final stage: ResultStage 0 (collect at webConfig.scala:27)
19/12/03 15:45:36 INFO DAGScheduler: Parents of final stage: List()
19/12/03 15:45:35 INFO MY_LOGS: Applying some post-checks
                                .
                                .
                                .
                                .
我需要从databrick上运行的每个作业上创建的标准log4j文件中筛选驱动程序日志,这样我就能够创建一个新文件,其中只包含使用我的代码记录的日志,然后将它们写入某个dbfs位置的新文件中。我附加了一个唯一的字符串来标识这些日志(MY_logs),但是我似乎找不到一种方法(可能是)重写databricks集群使用的现有log4j属性

到目前为止,我已经尝试编写一个简单的测试批处理脚本,并按照建议将其附加到init脚本中。
但是它不工作,而且集群在初始化过程中无法启动。

我也在寻找完全相同的东西。这将是理想的情况。但是,到目前为止,我有一个变通方法可以帮助您解决部分问题

  • 使用databricks cli将驱动程序日志移动到某个位置
  • 使用带有正则表达式的python脚本来获取您感兴趣的日志
  • 同时,我同意你的方法,并相信应该有更好的方法来实现这一点