Timestream for LiveAnalytics の UNLOAD のベストプラクティス - Amazon Timestream

Amazon Timestream for LiveAnalytics に類似した機能をご希望の場合は Amazon Timestream for InfluxDB をご検討ください。リアルタイム分析に適した、シンプルなデータインジェストと 1 桁ミリ秒のクエリ応答時間を特徴としています。詳細については、こちらを参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Timestream for LiveAnalytics の UNLOAD のベストプラクティス

UNLOAD コマンドに関連するベストプラクティスを次に示します。

  • UNLOAD コマンドを使用して S3 バケットにエクスポートできるデータ量に制限はありません。ただし、クエリは 60 分でタイムアウトするため、1 回のクエリでエクスポートするデータは 60 GB 以下にすることをお勧めします。60 GB を超えるデータをエクスポートする必要がある場合は、ジョブを複数のクエリに分割します。

  • 何千ものリクエストを S3 に送信してデータをアップロードできますが、書き込みオペレーションを複数の S3 プレフィックスに並列化することをお勧めします。こちらのドキュメントを参照してください。複数のリーダー/ライターが同じフォルダにアクセスすると、S3 API コールレートがスロットリングされる場合があります。

  • プレフィックスの定義には S3 キーの長さの制限があるため、特に partitioned_by 句を使用する場合は、バケット名とフォルダ名を 10~15 文字にすることをお勧めします。

  • UNLOAD ステートメントを含むクエリに対して 4XX または 5XX を受け取ると、部分的な結果が S3 バケットに書き込まれる可能性があります。Timestream for LiveAnalytics は、バケットからデータを削除しません。同じ S3 送信先で別の UNLOAD クエリを実行する前に、失敗したクエリによって作成されたファイルを手動で削除することをお勧めします。失敗したクエリによって書き込まれたファイルは、対応する QueryExecutionId で識別できます。クエリが失敗した場合、Timestream for LiveAnalytics はマニフェストファイルを S3 バケットにエクスポートしません。

  • Timestream for LiveAnalytics は、マルチパートアップロードを使用してクエリ結果を S3 にエクスポートします。UNLOAD ステートメントを含むクエリについて Timestream for LiveAnalytics から 4XX または 5XX を受け取ると、Timestream for LiveAnalytics はマルチパートアップロードのベストエフォート中止を実行しますが、一部の不完全なパートが残っている可能性があります。したがって、こちらのガイドラインに従って、S3 バケット内の不完全なマルチパートアップロードの自動クリーンアップを設定することをお勧めします。

CSV パーサーを使用して CSV 形式でデータにアクセスするための推奨事項

  • CSV パーサーでは、区切り文字、エスケープ文字、引用符文字を同じ文字にすることはできません。

  • 一部の CSV パーサーでは配列などの複雑なデータ型を解釈できないため、JSON デシリアライザーを使用して解釈することをお勧めします。

Parquet 形式でデータにアクセスするための推奨事項

  1. ユースケースにおいてスキーマ (列名) に UTF-8 文字のサポートが必要な場合は、Parquet-mr ライブラリを使用することをお勧めします。

  2. 結果のタイムスタンプは 12 バイト整数 (INT96) で表されます。

  3. 時系列は array<row<time, value>> として表され、他のネストされた構造は Parquet 形式でサポートされている対応するデータ型を使用します。

partition_by 句の使用

  • partitioned_by フィールドで使用される列は、選択クエリの最後の列である必要があります。partitioned_by フィールドで複数の列が使用されている場合、列は選択クエリの最後の列で、partition_by フィールドで使用されるのと同じ順序である必要があります。

  • データのパーティション化に使用される列値 (partitioned_by フィールド) には、ASCII 文字のみを含めることができます。Timestream for LiveAnalytics では値に UTF-8 文字を使用できますが、S3 ではオブジェクトキーとして ASCII 文字のみがサポートされています。