Snowpipe Streamingを Apache Iceberg™ テーブルで使用する¶
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テーブルの データストレージ はお客様の責任となります。
Snowflakeが管理するIcebergテーブルへのSnowpipe Streamingインジェスチョンは、期間限定で無料で利用可能です。
制限事項¶
Snowpipe Streamingについて記載されている 制限事項 は、Icebergテーブルを使用したSnowpipe Streamingにも適用されます。