当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。我猜测在成功执行期间插入的记录在任务重新提交时不可用,导致重复记录的出现。