kev*_*evi 8 duplicates apache-spark spark-streaming pyspark
我正在使用 Spark Streaming (spark 2.4.6) 从 NFS 安装点读取数据文件。但是,有时 Spark 流作业检查点文件对于不同批次的文件不同,因此会产生重复项。有人有类似的问题吗?
这是检查点的示例:
$ hdfs dfs -cat checkpoint/App/sources/0/15419.compact | grep 'export_dat_20210923.gz'
Run Code Online (Sandbox Code Playgroud)
{“路径”:“文件:///data_uploads/app/export_dat_20210923.gz”,“时间戳”:1632398460000,“batchId”:14994} {“路径”:“文件:/data_uploads/app/export_dat_20210923.gz”, “时间戳”:1632398460000,“batchId”:14997}
Exactly Once 保证伴随着关于源(可重放)、检查点(HDFS 兼容容错)和接收器(幂等)的多个假设。
当使用开箱即用的结构化流写入文件时,您不会总是获得幂等性。如果不同的批次写入不同的文件或分区,这可能会导致设计上的重复。例如,如本文所述,使用通配路径会导致重复。
本文描述了该问题。
有几个幂等目标(例如ElasticSearch),并且还建议如何以幂等方式编写,例如:
您可以通过实现首先检查数据存储中传入结果是否存在的逻辑来创建幂等接收器。如果结果已经存在,则从 Spark 作业的角度来看,写入应该看起来成功,但实际上您的数据存储忽略了重复数据。如果结果不存在,则接收器应将此新结果插入其存储中。
| 归档时间: |
|
| 查看次数: |
521 次 |
| 最近记录: |