Snowpipe Streamingのベストプラクティス¶
コスト最適化¶
ベストプラクティスとして、1秒あたりにより多くのデータを書き込む少数のクライアントで API を呼び出すことをお勧めします。JavaまたはScalaアプリケーションを使用する IoT デバイスやセンサーなどの複数のソースからデータを集計してから API を呼び出し、Snowflake Ingest SDK を使用してより高いフローレートでデータをロードします。API は、アカウント内の複数のターゲットテーブルにまたがるデータを効率的に集計します。
バッチとストリーミングの両方のインジェスチョンに同じテーブルを活用すると、ファイル移行が操作済みであるため、Snowpipe Streamingのコンピューティングコストを削減することもできます。
パフォーマンスの推奨事項¶
高スループットのデプロイで最適なパフォーマンスを得るには、次のアクションをお勧めします。
TIME、DATE、およびすべての TIMESTAMP 列の値を、
java.time
パッケージから サポートされている型 の1つとして渡す。OpenChannelRequest.builder
を使用してチャネルを作成する場合、OnErrorOption
をOnErrorOption.CONTINUE
に設定し、insertRows
からの戻り値で潜在的なインジェスチョンエラーがないか手動で確認する。現在、このアプローチはOnErrorOption.ABORT
が使用されたときにスローされる例外に依存するよりも優れたパフォーマンスをもたらします。複数の行をロードする場合、
insertRows
を使用すると、ロックに費やされる時間が少ないため、insertRow
を複数回呼び出すよりもパフォーマンスと費用対効果が高くなります。デフォルトのログレベルを DEBUG に設定する場合は、以下のロガーが INFO でログし続けることを確認してください。これは、 DEBUG の出力が非常に詳細で、パフォーマンスを著しく低下させる可能性があるからです。
net.snowflake.ingest.internal.apache.parquet
org.apache.parquet