只是试图找出解决这种情况的最佳方法。我使用dataset.write写入Oracle数据库,要求确定是否表中已经存在重复项(不在数据集中),如果存在则将这些重复记录写到另一个表中。有没有人遇到过类似的问题?我要写入的表是一个巨大的表,如果在写入数据集之前我从中读取现有数据进行比较会很昂贵
使用的savemode是append。它是一个kafka流应用程序,每2分钟连续流一次数据。
答案 0 :(得分:0)
没有UPSERT模式,我想您是说DF.write或DS.write。
问题是,这种重复多久发生一次,为什么?如果一个人不时地溜走会带来什么影响?不希望在这种情况下发生重复的密钥冲突。
如果逻辑上重复的插入很少,并且有合适的基于时间的ORACLE分区限制了要检查的数据量,则可以在DBMS上作为一个定期过程来进行此操作。
因此,我不会倾向于在SPARK方面进行检查。用KAFKA进行摄取并爆炸性地将其尽快写出来似乎还有些反常。
一个有趣的问题,因为做某事的任何方法都需要解决一些问题-SPARK方面的缓存,重新读取等。