从文档中可以清楚地看到,当使用TRIM_HORIZON作为迭代器类型启动KCL应用程序时,将从流的开头读取记录。文档还提到通过使用检查点在DynamoDB表中维护应用程序的状态。
但是我没有找到任何关于KCL应用程序如何使用此DynamoDB表信息的参考。
具体我的问题如下 - 我有保留期为168小时的流,这是很多数据。假设我的KCL(从TRIM_HORIZON的迭代器开始)与传入的数据同步,并且在流的末尾处理记录并定期进行chekcpointing。现在,如果我重新启动我的KCL,它将从流的开头开始读取数据(之前168小时),但仍然使用DynamoDB表来查看检查点并跳转到最新记录,或者根本不使用检查点信息从一开始就读取流而不管?
在后一种情况下,不需要重新处理大量数据。
我应该手动使用DynamoDB表中的序列号来获取分片迭代器吗?
答案 0 :(得分:0)
重新启动KCL应用程序时,会自动从DynamoDB表恢复其状态,因此您无需手动执行任何操作。处理从重新启动之前的最后一个检查点继续,因此如果重新启动意外发生并且应用程序在退出之前没有机会检查点,则准备好处理几个重复项(尽管可能还有其他reasons一式两份)
重新启动时,请确保提供与上一次启动时相同的应用程序名称。否则KCL会将这种情况视为创建一个新的独立应用程序,创建一个新的DynamoDB表并开始完全独立的处理。