Spark结构化的流式多动作共享相同的检查点

时间:2018-11-07 23:31:18

标签: apache-spark spark-structured-streaming

想象我从结构化流中获得了一个流。

val sourceDF = sparkSession.readStream
      .format("kafka")
      .option("kafka.bootstrap.servers", revBrokers)
      .option("subscribe", topic)
      ...
      as[(String, String)]

并且我想计算第一个字段不为空时的行数。同时将字符串写入hdfs。

伪代码:

sourceDF.filter(_.1 != "").count.writeStream.option("checkpointPath", <cp-1>).format("console").start()
sourceDF.writeStream.option("checkpointPath", <cp-2>).start(<descDir>)

但是现在这两个流不同步,因为它们独立运行。
但是,我真正想要的是对非空行进行计数并同时打印出该数字,然后将流保存到hdfs,这样我就知道保存了多少行具有非空第一字段。

任何人有任何想法如何实现这一目标?我知道火花流不是为此设计的(副作用处理),但是有时多动作将非常有用(火花流可以做到这一点,因为它使用的是微批次)。

0 个答案:

没有答案