Фильтр в MicroBatchExecution для журналов структурированной потоковой передачи Spark на EMR - PullRequest
0 голосов
/ 15 апреля 2020

Как ни старайся, я не могу понять, как контролировать безумное количество журналов, которые Spark (Structured Streaming) регистрирует в EMR. В конечном счете, я хочу видеть только журналы MicroBatchExecution, которые выводятся при нормальной работе Spark:

Пример.

20/04/14 15:14:40 INFO MicroBatchExecution: Streaming query made progress: {
  "id" : "7c06570b-81fb-411e-8d57-d1b7cb0e44c2",
  "runId" : "8b102728-6d06-4412-8483-fbda604fd50c",
  "name" : null,
  "timestamp" : "2020-04-14T22:14:20.004Z",
  "batchId" : 0,
  "numInputRows" : 4004,
  "inputRowsPerSecond" : 800.9601920384077,
  ...
}

Однако я вижу тонну журналов, выходящих из EMR (я скопируйте их в S3), которые выглядят так:

20/03/31 22:20:03 WARN FileStreamSource: Listed 1220 file(s) in 3138.213055 ms
20/03/31 22:30:03 WARN FileStreamSource: Listed 1221 file(s) in 3233.713993 ms
20/03/31 22:30:11 INFO ContainerManagementProtocolProxy: yarn.client.max-cached-nodemanagers-proxies : 0
20/03/31 22:40:02 WARN FileStreamSource: Listed 1221 file(s) in 2735.478291 ms
20/03/31 22:50:02 WARN FileStreamSource: Listed 1222 file(s) in 2784.097324 ms
20/03/31 22:50:08 INFO ContainerManagementProtocolProxy: yarn.client.max-cached-nodemanagers-proxies : 0

Я попытался настроить конфигурацию, входящую в кластер, следующим образом:

    def configurations(self):
        """ Configurations to be used with all spark jobs."""
        log_pattern = "%d{yy/MM/dd HH:mm:ss} %p " + self.project_name + " %c{1}: %m%n"
        return [
            {
                "Classification": "spark-defaults",
                "Properties": self.spark_config},
            {
                "Classification": "spark",
                "Properties": {"maximizeResourceAllocation": "true"},
            },
            {
                "Classification": "spark-log4j",
                "Properties": {
                    "log4j.logger.org.apache.spark.deploy.yarn.Client": "WARN",  # Silence status updates from Yarn
                    "log4j.logger.org.apache.spark": "WARN, RollingAppender",
                    "log4j.appender.RollingAppender": "org.apache.log4j.RollingFileAppender",
                    "log4j.appender.RollingAppender.File": "System.err",
                    "log4j.appender.RollingAppender.MaxFileSize": "100MB",
                    "log4j.appender.RollingAppender.MaxBackupIndex": "10",
                    "log4j.appender.RollingAppender.layout": "org.apache.log4j.PatternLayout",
                    "log4j.appender.RollingAppender.layout.ConversionPattern": log_pattern,
                },
            },
            {
                "Classification": "yarn-site", # Stop container killed by YARN for exceeding memory limits.
                "Properties": {
                    "yarn.nodemanager.vmem-check-enabled": "false"
                }
            },

        ]

Это значительно уменьшает количество журналов , но я все еще вижу тонны журналов (таких как строки FileStreamSource и ~ 60k и выше). Я мог бы установить для уровней журнала значение ERROR, но мне нужно, чтобы уровень был на уровне INFO, чтобы я мог получить MicroBatchExecution.

Я проверил несколько источников в Интернете и, похоже, не могу получить это правильно. Я знаю, что это, вероятно, проблема с конфигурациями.

Любая помощь будет оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...