我在一个spark会话中配置了一些结构化流。我需要知道在每个流中读取和写入了多少条记录。 例如,我有这两个流:
我知道使用SparkListener()。onTaskEnd()但是那时我没有查询名称,taskEnd.taskMetrics().outputMetrics().recordsWritten()
总是0,所以它不是一个选项。
另一种方法是使用dataset.map()中的累加器来逐步计算它。但是,这不是一些书面记录,而是要写入的记录(如果下沉没有失败)。
除此之外,我尝试使用StreamingQueryListener(我用它来获取numInputRows
),但我找不到任何关于书面记录数量的指标。
是否有可能获得此类指标?
答案 0 :(得分:0)
有a bug in FileStreamSink在版本2.3.1中已修复。
作为解决方法,在映射函数中使用accumulators来在写入接收器之前对记录数进行计数。