|iceberg-tm|テーブルによるSnowpipe Streaming高性能アーキテクチャ¶
高性能アーキテクチャのSnowpipe Streamingは、Iceberg v2および:doc:`Iceberg v3 </user-guide/tables-iceberg-v3-specification-support>`テーブルの両方を含む、Snowflake管理の:doc:`Apache Iceberg </user-guide/tables-iceberg>`テーブルへのデータのインジェストをサポートします。これにより、高性能アーキテクチャのすべてのパフォーマンス上の利点を備えつつ、Icebergテーブルへのほぼリアルタイムのデータのストリーミングが可能になります。
注釈
クラシックアーキテクチャはIceberg v2テーブルのみをサポートします。Iceberg v3のサポートが必要な場合は、高性能アーキテクチャを使用する必要があります。クラシックアーキテクチャにおけるIcebergのサポートについて詳しくは、:doc:`snowpipe-streaming-classic-iceberg`を参照してください。
仕組み¶
Snowpipe Streamingは、PIPEオブジェクトを通じてターゲットのIcebergテーブルにデータをインジェストします。Snowflakeは、対応するIcebergメタデータとともにIceberg互換のApache Parquetデータファイルを作成し、構成済みの外部クラウドストレージの場所にアップロードします。データは、IcebergカタログとしてSnowflakeに登録されたSnowflake管理のIcebergテーブルとして利用できるようになります。
Snowflakeは 外部ボリューム を使用してストレージの場所に接続します。
始めましょう¶
このセクションでは、Icebergテーブルにデータをインジェストするために、高性能アーキテクチャのSnowpipe Streamingを設定する方法のステップバイステップの例を示します。
ステップ1:外部ボリュームを作成する¶
Icebergテーブルデータのストレージの場所を指定する:doc:`外部ボリューム</user-guide/tables-iceberg-configure-external-volume>`を作成します。
外部ボリュームに対してストリーミングロールUSAGEを付与します。
ステップ2:Snowflake管理のIcebergテーブルを作成する¶
構成済みの外部ボリュームを使用して、:doc:`Snowflake管理のIcebergテーブル</sql-reference/sql/create-iceberg-table-snowflake>`を作成します。
注釈
``ICEBERG_VERSION``パラメーターを省略した場合、テーブルのデフォルトはIceberg v2になります。
ステップ3:インジェスチョン用のパイプの作成¶
Icebergテーブルをターゲットとするパイプを作成します。デフォルトのパイプ(自動的に作成)を使用するか、カスタムパイプを作成できます。
ステップ4:SDKを使用してデータをストリーミングする¶
SDKを構成し、パイプを介してIcebergテーブルにデータをストリーミングします。:doc:`snowpipe-streaming-high-performance-getting-started`で説明されているのと同じSDKのセットアップを使用し、クライアント構成でIcebergテーブルのパイプを指定します。
サポートされているIcebergバージョン¶
高性能アーキテクチャは、Iceberg v2および:doc:`Iceberg v3 </user-guide/tables-iceberg-v3-specification-support>`両方のテーブルをサポートしています。
:doc:`クラシックアーキテクチャ<snowpipe-streaming-classic-iceberg>`はIceberg v2テーブルのみをサポートしています。
サポートされているデータ型¶
Snowflake Ingest SDKは、現在SnowflakeがサポートしているIcebergデータ型のほとんどをサポートしています。詳細については、 Apache Iceberg™ テーブルのデータ型 をご参照ください。
SDKは、3つの:doc:`構造化データ型</sql-reference/data-types-structured>`へのインジェスチョンもサポートしています。構造化ARRAY、構造化OBJECT、および構造化MAPです。
使用上の注意¶
Snowpipe Streamingは、**IcebergカタログとしてSnowflake**のみをサポートします。外部カタログ(AWS GlueやHive Metastoreなど)を使用する外部管理Icebergテーブルはサポートされていません。ただし、:doc:`Snowflake管理のIcebergテーブルをSnowflake Open Catalogと同期する</user-guide/tables-iceberg-open-catalog-sync>`ことは可能です。
Snowflakeは 外部ボリューム を使用してストレージの場所に接続します。Icebergテーブルの データストレージ はお客様の責任となります。
Iceberg互換のParquetファイルは、Icebergテーブルで指定された:ref:`STORAGE_SERIALIZATION_POLICY <label-storage_serialization_policy>`に基づいて作成されます。
制限事項¶
高性能アーキテクチャおよびIcebergテーブルを使用したSnowpipe Streamingには、次の制限が適用されます。
パーティション化されたIcebergテーブルはサポートされていません。
スキーマの進化はIcebergテーブルではサポートされていません。
長さに制約のあるVARCHAR列(たとえば、
VARCHAR(100))は、Icebergテーブルではサポートされていません。長さの制約なしでSTRINGまたはVARCHARを使用してください。
:ref:`Snowpipe Streaming高性能アーキテクチャの制限<label-snowpipe_streaming_high_performance_limitations>`および:ref:`Icebergテーブルの制限<label-tables_iceberg_considerations>`も適用されます。