Я выполняю несколько заданий потоковой передачи со структурой искр и использую метод 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](https://i.stack.imgur.com/A5gWt.png)