我目前正在研究并尝试为Spark结构化的流readStream实施适当的检查点,以使最近因故障而恢复的Kafka使用者从其上次提交的消息中恢复。
使用“最新”会带来数据丢失的风险,而“最早”会导致很多非结构化数据的低效率重新处理。
流传输管道当前正在Microsoft Azure中由以下内容组成的环境中运行:
当前没有设置HDFS系统的选项。
我知道有一个选项可以将znodes用作Dstream的可靠偏移检查点位置,但是有没有办法在readStream中使用znode检查点呢?
理想情况下
checkpoint_location = '[ideally a znode path/object]'
message = spark.readStream
.format("kafka")
.option("kafka.bootstrap.servers", consumer_bootstrap_servers)
.option("subscribe", consumer_topic)
.option("startingOffsets", consumer_startingOffsets)
.option("group.id", consumer_group_id)
.option("checkpointLocation", checkpoint_location)
.option("failOnDataLoss", "false")
.load()
我已经参考了诸如https://blog.cloudera.com/blog/2017/06/offset-management-for-apache-kafka-with-apache-spark-streaming/之类的指南,但是,我现在试图避免使用Dstream。
如果这不可能,那么任何建议都将受到欢迎。