小编Har*_*nna的帖子

结构化流如何确保文件接收器的一次性写入语义?

我正在为 Spark 结构化流编写一个存储编写器,它将对给定的数据帧进行分区并写入不同的 Blob 存储帐户。Spark 文档说它确保了exactly once文件接收器的语义,但也说只有当源可重播并且接收器是幂等时才可能实现一次语义。

  1. 如果我以 parquet 格式写入,blob 存储是幂等接收器吗?

  2. 如果我这样做的话,行为会发生什么变化streamingDF.writestream.foreachbatch(...writing the DF here...).start()?它仍然能保证一次语义吗?

可能重复:如何获取结构化查询的 Kafka 偏移量以进行手动可靠的偏移量管理?

更新#1:类似 -

output
      .writeStream
      .foreachBatch((df: DataFrame, _: Long) => {
        path = storagePaths(r.nextInt(3))

        df.persist()
        df.write.parquet(path)
        df.unpersist()
      })
Run Code Online (Sandbox Code Playgroud)

apache-spark spark-structured-streaming

2
推荐指数
1
解决办法
2646
查看次数