Spark структурированные потоковые мульти-действия совместно используют одну и ту же контрольную точку
Представьте, у меня есть один поток из структурированного потока.
val sourceDF = sparkSession.readStream
.format("kafka")
.option("kafka.bootstrap.servers", revBrokers)
.option("subscribe", topic)
...
as[(String, String)]
и я хочу посчитать количество строк, когда первое поле не пустое String одновременно записать это в hdfs.
псевдокод:
sourceDF.filter(_.1 != "").count.writeStream.option("checkpointPath", <cp-1>).format("console").start()
sourceDF.writeStream.option("checkpointPath", <cp-2>).start(<descDir>)
но теперь эти 2 потока не синхронизированы, потому что они работают независимо.
однако, что я действительно хочу, так это подсчитать непустые строки и распечатать их одновременно, сохранив поток в формате hdf, чтобы я знал, сколько строк, которые я сохранил, имеют непустое первое поле.
у кого есть идеи как этого добиться? Я знаю, что потоковое воспроизведение с плавающей точкой не предназначено для этого (обработка побочных эффектов), но иногда многократные действия могут быть очень полезными (потоковая передача с использованием искры может сделать это, поскольку она использует микропакеты).