|iceberg-tm|テーブルを使用したSnowpipe Streaming Classic¶
Snowflake Ingest SDK バージョン3.0.0以降では、Snowpipe StreamingはSnowflake管理 Apache Iceberg テーブルにデータをインジェストできます。Snowpipe Streaming Ingest Java SDK は、標準のSnowflakeテーブル(非Iceberg)とIcebergテーブルの両方へのロードをサポートしています。
Snowpipe Streaming API を通して送信されたデータは、1つ以上のチャンネルを通して行を取り込み、指定された MAX_CLIENT_LAG に従って自動的にフラッシュされます。
MAX_CLIENT_LAG プロパティは、ストリーミングインジェスチョンのレイテンシーを制御します。
標準的なSnowflakeテーブル(Iceberg以外)の場合、デフォルトの
MAX_CLIENT_LAGは1秒です。Icebergテーブルの場合、デフォルトの
MAX_CLIENT_LAGは30秒です。
Snowflakeは、 外部ボリューム を使用してストレージの場所に接続し、Snowpipe Streamingがデータをフラッシュして、対応するIcebergメタデータを持つIceberg互換のParquetデータファイルを作成します。これらのParquetデータとメタデータファイルは、構成した外部クラウドストレージにアップロードされ、IcebergカタログとしてSnowflakeに登録されたSnowflake管理Icebergテーブルとして利用可能になります。
構成¶
構成された外部ボリュームでSnowflake管理Icebergテーブル を作成し、オープン チャネル リクエストでIcebergテーブル名を指定します。
Snowflake管理のIcebergテーブルでSnowpipe Streamingを有効にするには、 profile.json ファイルで以下のプロパティ ENABLE_ICEBERG_STREAMING=true をセットする必要があります。
サポートされているデータ型¶
Snowflake Ingest SDK は、現在Snowflakeがサポートしているものと同じ、Icebergデータ型のほとんどをサポートしています。詳細については、 Apache Iceberg™ テーブルのデータ型 をご参照ください。
Snowflake Ingest SDK は、3つの 構造化データ型 へのインジェスチョンをサポートしています: 構造化 ARRAY、構造化 OBJECT、構造化 MAP。
使用上の注意¶
Snowflakeが管理するIcebergテーブルへのストリームのデフォルト
MAX_CLIENT_LAGは、Parquetファイルが最適化されるように30秒になっています。プロパティを低い値にセットすることもできますが、スループットが著しく高い場合を除き、これを 行わない ことをお勧めします。Ingest SDK は、小さなParquetファイルの自動サーバーレス圧縮を非同期でサポートします。
同じクライアントアプリケーションをIcebergテーブルとIceberg以外のテーブルに同時に使用することはできません。
Snowflake管理のIcebergテーブルはクライアント側の暗号化をサポートしていません。
Iceberg互換Parquetファイルは、Icebergテーブルで指定された STORAGE_SERIALIZATION_POLICY に基づいて作成されます。
Snowpipe StreamingはIcebergカタログとしてSnowflakeのみをサポートしていますが、 Snowflake Open Catalogとの同期 もサポートしています。
Snowflakeは 外部ボリューム を使用してストレージの場所に接続します。Icebergテーブルの データストレージ はお客様の責任となります。
Only Iceberg v2 tables are supported. Iceberg v3 tables aren't supported. To use Snowpipe Streaming with Iceberg v3 tables, you must use Snowpipe Streaming with high-performance architecture.
制限事項¶
Snowpipe Streamingの制限 および Iceberg tablesの制限 は、Iceberg tablesを使用したSnowpipe Streamingにも適用されます。