Почему журналы QueryProgressEvent из StreamingQueryListener отсутствуют в задании Spark Structured Streaming? - PullRequest
0 голосов
/ 19 июня 2020

Я выполняю несколько заданий потоковой передачи со структурой искр и использую метод onQueryProgress из класса QueryProgressMetricsListener для регистрации события QueryProgressEvent. Обычно он работает нормально и печатает журнал всякий раз, когда завершается микропакет.

Но для одной из моих задач я вижу, что микропакеты выполняются, поскольку я вижу их в SparkUI, но этот журнал не печатается . Я также вижу ниже предупреждающее сообщение в этой работе. Что могло быть причиной этого? (Я ожидаю, что onQueryProgress будет выполняться с каждым новым микропакетом)

2020-06-19 04:09:14 WARN  org.apache.spark.executor.Executor.logWarning:66 - Managed memory leak detected; size = 16777216 bytes, TID = 14038

Только журнал, который я получаю от QueryProgressMetricsListener, равен event : QueryStarted. Логов с event : QueryProgress нет. Однако нижеприведенный пользовательский журнал продолжает печататься с увеличивающимся идентификатором партии.

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

rates.writeStream
    .trigger(Trigger.ProcessingTime(10000))
    .foreachBatch {
      (_, batchID: Long) =>
        logWarning(s"batchId is : ${batchID}")
        ProcessMain.processCassandra(spark)
    }
    .start()

Снимки пользовательского интерфейса Spark, показывающие идентификатор пакета 444 и 443 enter image description here enter image description here

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