Spark任务失败时的重复记录

问题描述 投票:3回答:1

当执行火花任务失败并再次重新启动时,我面临Cassandra表中的重复记录。我尝试插入的表的架构。

CREATE TABLE duplicate_record (object_id bigint,entity_key timeuuid,
PRIMARY KEY (object_id, entity_key));

表中的示例重复记录

1181592431 uuid
1181592431 uuid1
8082869622 uuid2
8082869622 uuid3

我有一个由Oracle和Cassandra之间的左联接产生的df。因此,我们已经在Cassandra中存在现有记录,并且已经有从Oracle生成的新记录。我应用每个记录的映射,以查看entity_id是否存在。如果存在,则将其用于其他记录,以创建新的entity_id,然后进行保存。我正在使用saveToCassandra将此df插入Cassandra。

当任务失败并重新启动时,将使用不同的entity_key再次插入已插入的记录。我猜想重新执行任务导致重复记录后,成功执行期间插入的记录将不可用。

apache-spark cassandra spark-cassandra-connector
1个回答
0
投票

Spark Speculative Execution可能导致重复的记录,因此请将其设置为false。

即使发生这种情况,也可能是由于某些Spark节点/任务重新启动了。。。存在一个重复记录提交的Spark错误,在2.1.3版本中已解决:https://issues.apache.org/jira/browse/SPARK-24589

请确保您在2.1.3+上运行。

© www.soinside.com 2019 - 2024. All rights reserved.