在结构化流查询中记录中介结果

时间:2019-01-21 18:16:40

标签: apache-spark spark-structured-streaming

我正在编写包含过滤器的结构化流查询,然后设置水印。如何记录过滤出的行?

这似乎不太可能,因为结构化流仅允许评估一个查询。显然,执行.collect并记录行是行不通的,因为仅使用.writeStream评估流数据集,并且查询中只能有一个这样的调用:

def process: DataFrame = {
    // df is a streaming dataset
    val toDrop = df.filter(condition)
    val toKeep = df.filter(!condition)
    // doesn't work on streaming datasets
    log(s"Lines dropped: ${toDrop.collect.mkString(", ")}")
    toKeep.withWatermark(...)
}

一种解决方案可能是将过滤器移至foreachBatch中,但就我而言,我需要在设置水印之前进行过滤,因此这不是一个选择。

0 个答案:

没有答案