我正在为 Spark 结构化流编写一个存储编写器,它将对给定的数据帧进行分区并写入不同的 Blob 存储帐户。Spark 文档说它确保了exactly once文件接收器的语义,但也说只有当源可重播并且接收器是幂等时才可能实现一次语义。
如果我以 parquet 格式写入,blob 存储是幂等接收器吗?
如果我这样做的话,行为会发生什么变化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)