Переписывание свойств log4j для фильтрации журналов в Databricks - PullRequest
1 голос
/ 16 января 2020

Я выполняю свою работу на кластерах Databricks. Для каждого запуска задания создаются журналы искрового драйвера, которые состоят из файлов stdout, sterr и log4j. Я также использовал ту же библиотеку log4j в своем коде для регистрации, и, следовательно, мои журналы печатаются как часть файлов журнала драйвера log4j. enter image description here

Проблема в том, что в большинстве файлов драйвера log4j содержатся журналы, созданные с помощью блоков данных или спарка, и поиск журналов, связанных с моим проектом, становится действительно трудным. Я добавил префикс в свои журналы, чтобы сделать поиск немного проще, но все же он недостаточно удобен.

Файл 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
                                .
                                .
                                .
                                .

Мне нужно отфильтровать драйвер журналы из стандартных файлов log4j, создаваемых при каждом задании, выполняемом на Databricks, так что я могу создать новый файл, содержащий только те журналы, которые записываются с использованием моего кода, а затем записать их в новый файл в каком-то месте dbfs. Я добавил уникальную строку для идентификации этих журналов (MY_LOGS), но я не могу найти способ перезаписать существующие свойства log4j, используемые кластерами блоков данных.

Пока что попытался написать простой тестовый пакетный скрипт и прикрепить его в скриптах инициализации, как предложено здесь . enter image description here Но он не работает, и кластер не запускается во время самой инициализации.

...