Spark结构化流Sql中的计数行

时间:2019-01-04 14:23:46

标签: scala apache-spark apache-spark-sql spark-structured-streaming

方案:在结构化SQL中处理Spark流。我必须实现一个有关“我”在上一个“窗口”中处理了多少行的“信息”数据集。

一些代码。

val invalidData: Dataset[String] =
    parsedData.filter(record => !record.isValid).map(record => record.rawInput)

val validData: Dataset[FlatOutput] = parsedData
    .filter(record => record.isValid)

我有两个Dataset。但是由于我正在使用流技术,所以无法执行.count(引发错误:Queries with streaming sources must be executed with writeStream.start()

val infoDataset = validData
    .select(count("*") as "valid")

但是发生了一个新错误:Append output mode not supported when there are streaming aggregations on streaming DataFrames/DataSets without watermark,并且我不想将outputMode设置为完整,因为我不想从头开始总计数,而只是最后一个“窗口”批次。

不幸的是,我没有任何列可以注册为这些数据集的水印。

有没有办法知道每次迭代处理多少行?

按照杰克的评论,我尝试实施StreamingQueryProgress

0 个答案:

没有答案