4

Firehose-> S3は、S3でキーを作成するための接頭辞として現在の日付を使用します。このため、レコードが書き込まれるまでにデータが分割されます。私のFirehoseストリームには、特定のイベント時間を持つイベントが含まれています。パーティションKinesis firehose S3はイベント時刻別に記録します

代わりにこのイベント時刻を含むS3キーを作成する方法はありますか?ダウンストリームの処理ツールは、実際に発生したときに関連する「時間フォルダ」内の各イベントに依存します。それとも、Firehoseが完了した後に、追加の処理ステップが必要ですか?

イベント時刻はパーティションキーにある可能性があります。または、ラムダ関数を使用してレコードから解析することができます。

答えて

2

Kinesis Firehoseは、最終的なS3オブジェクトの日付サフィックスの生成方法をクライアントが制御することはできません。

唯一のオプションは、Kinesis Firehoseの後に後処理レイヤーを追加することです。たとえば、データパイプラインを使用して1時間ごとに書かれたすべてのファイルを読み取り、それらを発行してS3の宛先を修正するEMRジョブをスケジュールすることができます。

0

質問には答えがありませんが、イベント到着時刻に従ってレコードを保存するという考えを少し説明したいと思います。

最初はストリームについての言葉です。キネシスは単なるデータストリームです。そしてそれはというコンセプトを持ち、を消費します。 1つのストリームは、を順番に読み取ることによってのみストリームを消費することができます。。また、消費プロセスを一時停止および再開するためのメカニズムとして、チェックポイントの考えもあります。チェックポイントは、ストリーム内の位置を識別するシーケンス番号です。この番号を指定することで、特定のイベントからストリームを読み始めることができます。

今度はデフォルトのs3 firehose setup ...に戻るkinesisストリームの容量は非常に限られているため、おそらくキネシスのデータを後で分析するためにどこかに格納する必要があります。そしてのfirehose to s3セットアップはすぐに箱から出します。ストリームからs3バケットまでの生データを保存するだけです。しかし論理的には、このデータはレコードのまだ同じストリームです。そして、このストリームを信頼できる(読み込む)ことができるためには、チェックポイントのためにこれらの連続番号が必要です。そして、これらの数字はレコード到着時刻です。

作成時にレコードを読みたい場合はどうすればよいですか?このタスクを実行する適切な方法は、s3ストリームを順次読み込み、それをいくつかの[時系列]データベースまたはデータウェアハウスにダンプし、この記憶域に対して作成時の読みを行うことです。さもなければ、s3(ストリーム)を読んでいる間に、いくつかの大事なイベントを逃すチャンスは常にゼロではありません。だから私はs3バケットの並べ替えを全く提案しません。

関連する問題