Spark任务失败时重复记录

时间:2017-03-22 09:55:27

标签: apache-spark cassandra spark-cassandra-connector

当spark任务失败并再次重新启动时,我在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。我想在重新提交任务时,成功执行期间插入的记录不可用,导致重复记录。

1 个答案:

答案 0 :(得分:0)

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

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

请确保您在2.1.3+上运行。