mat*_*ieu 7 apache-spark spark-streaming
在下面的例子中,我想更好地理解Spark 2.2结构化流的一致性模型:
我想了解是否在汇点之间存在任何一致性保证,至少在某些情况下:
原因是我想构建一个类似Kappa的处理应用程序,能够在我想重新处理某些历史记录时暂停/关闭流媒体部分,并且当我恢复流式传输时,避免重新处理已经处理的内容(如在历史中),或遗漏了一些(例如,一些尚未提交到存档的数据,然后在流式恢复时已经处理的数据被跳过)
Sil*_*vio 10
要记住的一件重要事情是2个不同的查询将使用2个接收器,每个查询独立于源.因此,检查点是按查询完成的.
每当您调用start一个DataStreamWriter导致新查询时,如果您设置checkpointLocation每个查询将有自己的检查点来跟踪接收器的偏移量.
val input = spark.readStream....
val query1 = input.select('colA, 'colB)
.writeStream
.format("parquet")
.option("checkpointLocation", "path/to/checkpoint/dir1")
.start("/path1")
val query2 = input.select('colA, 'colB)
.writeStream
.format("csv")
.option("checkpointLocation", "path/to/checkpoint/dir2")
.start("/path2")
Run Code Online (Sandbox Code Playgroud)
因此,每个查询都是从源读取并独立跟踪偏移量.这也意味着,每个查询可以处于输入流的不同偏移量,您可以重新启动其中一个或两个,而不会影响另一个.
| 归档时间: |
|
| 查看次数: |
640 次 |
| 最近记录: |