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, чтобы я знал, сколько строк, которые я сохранил, имеют непустое первое поле.

у кого есть идеи как этого добиться? Я знаю, что потоковое воспроизведение с плавающей точкой не предназначено для этого (обработка побочных эффектов), но иногда многократные действия могут быть очень полезными (потоковая передача с использованием искры может сделать это, поскольку она использует микропакеты).

0 ответов

Другие вопросы по тегам