2017-04-01 3 views
2

ドキュメントからは、イテレータタイプとしてTRIM_HORIZONを使用してKCLアプリケーションを開始すると、レコードがストリームの先頭から読み込まれることは明らかです。また、アプリケーションの状態は、チェックポイントを使用してDynamoDBテーブルに保持されていることにも言及しています。Kinesisコンシューマアプリケーションの起動時に、DynamoDBテーブルの状態はどのように使用されますか?

しかし、このDynamoDBテーブル情報がKCLアプリケーションでどのように使用されているかについては、わかりません。具体的には

次のように私の問題がある - 私は多くのデータで168時間の保存期間で流れを持っています。私のKCL(TRIM_HORIZONのイテレータで始まりました)が入ってくるデータと同期していて、ストリームの終わりにレコードを処理していて、一定の間隔でチェクシングしていたとします。今すぐKCLを再起動すると、データの読み取り(168時間前)はストリームの先頭から開始されますが、DynamoDBテーブルを使用してチェックポイントを表示し、最新のレコードにスキップするか、チェックポイント情報がまったく使用されない開始からストリームは無関係に読み込まれますか?

後者の場合、膨大な量のデータを再処理する必要はありません。

シャードイテレータを取得するために、DynamoDBテーブルのシーケンス番号を手動で使用する必要がありますか? KCLアプリケーションが再起動される

答えて

0

が自動的DynamoDBのテーブルからその状態を復元し、その手動でを何もする必要はありません。処理は、再起動が突然発生し、アプリケーションが終了する前にチェックポイントする機会を持っていなかった場合(重複のために他のreasonsがあるかもしれませんが)ので、いくつかの重複アイテムを処理する準備ができて

、再起動の前に行われた最後のチェックポイントから再開します

再起動する場合は、前回の起動時と同じアプリケーション名をに指定してください。それ以外の場合、KCLはこの状況を新しいアプリケーションを作成するものとして扱い、新しいDynamoDBテーブルを作成し、完全に独立した処理を開始します。

関連する問題