Snowpipe Streamingを Apache Iceberg™ テーブルで使用する

Snowflake Ingest SDK バージョン3.0.0以降では、 Snowpipe Streaming で、Snowflakeが管理する Apache Iceberg テーブルにデータをインジェストできます。Snowpipe Streaming Ingest Java SDK は、標準のSnowflakeテーブル(非Iceberg)とIcebergテーブルの両方へのロードをサポートしています。

Icebergテーブルを使ったSnowpipe Streaming

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にも適用されます。