gpt4 book ai didi

duplicates - 如何对从AWS Kinesis Firehose到Redshift的记录进行重复数据删除?

转载 作者:行者123 更新时间:2023-12-04 22:58:18 25 4
gpt4 key购买 nike

我阅读了官方AWS Kinesis Firehose的文档,但没有提及如何处理重复的事件。有没有人有经验?我用Google搜索某人使用ElasticCache进行过​​滤,这是否意味着我需要使用AWS Lambda封装此类过滤逻辑?是否有像firehose这样的简单方法将数据提取到Redshift中,同时具有“恰好一次”的语义?非常感谢!

最佳答案

您可以在Kinesis Stream的两侧进行复制。您可能会将相同的事件两次放入Stream中,并且消费者可能会两次读取该事件。

如果您尝试将事件放到Kinesis流中,则生产者端可能会发生,但是由于某种原因,您不确定该事件是否被成功写入,因此您决定再次放置它。如果您获取一批事件并开始处理它们,并且在您设法检查点位置之前崩溃,并且下一个工作人员正在根据最近的检查点从Kinesis流中选择同一批事件,则发生使用者方面可能会发生序列ID。

在开始解决此问题之前,您应该评估多久进行一次此类重复以及此类重复对业务产生的影响。并非每个系统都在处理不能容忍重复的金融交易。但是,如果您决定需要进行重复数据删除,一种常见的解决方法是使用某些事件ID,并跟踪是否已经处理了该事件ID。

带Redis的ElasticCache是​​跟踪事件ID的好地方。每次选择要处理的事件时,都会检查Redis的哈希表中是否已包含该事件,如果找到该事件,则将其跳过,如果未找到,则将其添加到表中(带有基于此类复制的可能时间窗口的一些TTL)。

如果选择使用Kinesis Firehose(而不是Kinesis Streams),则您将无法再控制使用者应用程序,因此无法实现此过程。因此,您要么想在生产方运行这种重复数据删除逻辑,要么切换到使用Kinesis Streams并在Lambda或KCL中运行自己的代码,要么在Redshift中适应重复数据删除功能(请参见下文)。

如果您对复制不太敏感,则可以在Redshift中使用某些函数,例如WINDOW函数中的COUNT DISTINCT或LAST_VALUE。

关于duplicates - 如何对从AWS Kinesis Firehose到Redshift的记录进行重复数据删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34824553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com