我正在运行多个spark结构化流媒体作业并使用 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
. 但是,下面的自定义日志会不断打印,并且批次id会不断增加。
要理解批处理是否真的得到了处理是令人困惑的。我的理解是,Spark过程批顺序和新的一批应该只出现在前一个完成。
rates.writeStream
.trigger(Trigger.ProcessingTime(10000))
.foreachBatch {
(_, batchID: Long) =>
logWarning(s"batchId is : ${batchID}")
ProcessMain.processCassandra(spark)
}
.start()
显示批次id 444和443的spark ui快照
暂无答案!
目前还没有任何答案,快来回答吧!