Snowflakeで管理されたテーブルを Snowflake Open Catalog と同期する¶
Apache Spark™などのサードパーティエンジンを使用してSnowflakeが管理する Apache Iceberg™ テーブルをクエリするには、テーブルを Snowflake Open Catalog と同期します。
このトピックでは、Snowflakeのカタログ統合と Open Catalog の外部カタログを使用して、Snowflakeが管理するIcebergテーブルを Snowflake Open Catalog と同期する方法について説明します。
ステップ1: 外部ボリュームを作成する¶
まだお持ちでない場合は、テーブルデータとメタデータを保存するクラウドストレージ場所へのアクセスを提供する外部ボリュームをSnowflakeで作成することから始めます。
ご利用のクラウドストレージサービスの手順に従ってください。
ステップ2: Open Catalog リソースを設定する¶
次に、このセクションの手順を実行して、 Open Catalog アカウントに外部カタログとサービス接続を作成します。
カタログの作成 の手順に従って、 Open Catalog アカウントに外部カタログを作成します。外部カタログの以下の設定が構成されていることを確認します。
External のトグルが有効になっています。
Default base location は ステップ1: 外部ボリュームを作成する で作成した外部ボリュームの
STORAGE_BASE_URL
と一致します。
Open Catalog はSnowflakeで管理されているテーブルをこの外部カタログに同期します。
Snowflake用のサービス接続がまだない場合は、 サービス接続の構成 の手順に従って、 Open Catalog アカウントにSnowflakeエンジン用の接続を作成します。
外部カタログへのアクセスを許可する権限を持つ、外部カタログ用のカタログロールを構成します。手順については、 カタログへの権限の付与 を参照してください。
カタログロールには、カタログ上で以下の権限が必要です。
TABLE_CREATE
TABLE_WRITE_PROPERTIES
TABLE_DROP
NAMESPACE_CREATE
NAMESPACE_DROP
これらの権限をそれぞれカタログロールに付与するか、これらの権限を含む CATALOG_MANAGE_CONTENT 権限を付与することができます。詳しくは、 Snowflake Open Catalogのカタログ権限 をご覧ください。
サービス接続のプリンシパルロールにカタログロールを添付します。これにより、サービス接続はカタログにアクセスできます。手順については、 プリンシパルロールへのカタログロールの付与 を参照してください。
ステップ3: Open Catalog のカタログ統合を作成する¶
CREATE CATALOG INTEGRATION (Snowflake Open Catalog) コマンドを使用して、 Open Catalog のカタログ統合を作成します。WAREHOUSE の場合は、 Open Catalog アカウントで構成した外部カタログの名前を指定します。
カタログ統合の作成に関するトラブルシューティングについては、 オープンカタログのカタログ統合が作成できない をご参照ください。
CREATE OR REPLACE CATALOG INTEGRATION my_open_catalog_int
CATALOG_SOURCE = POLARIS
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'myOpenCatalogNamespace'
REST_CONFIG = (
CATALOG_URI = 'https://myAccount.snowflakecomputing.com/polaris/api/catalog'
WAREHOUSE = 'myOpenCatalogExternalCatalogName'
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_CLIENT_ID = 'myClientId'
OAUTH_CLIENT_SECRET = 'myClientSecret'
OAUTH_ALLOWED_SCOPES = ('PRINCIPAL_ROLE:ALL')
)
ENABLED = TRUE;
注釈
このカタログ統合を使用して、1つまたは複数のSnowflake管理テーブルを同期することができます。
ステップ4: Snowflake管理テーブルを作成する¶
CREATE ICEBERG TABLE (IcebergカタログとしてのSnowflake) コマンドを使用して、Snowflake管理のIcebergテーブルを作成します。
CATALOG_SYNC パラメーターには、 Open Catalog のカタログ統合名を指定します。
Snowflake 管理テーブルの作成に関する問題のトラブルシューティングについては、 Snowflake管理テーブルが作成できない をご参照ください。
CREATE OR REPLACE ICEBERG TABLE my_managed_iceberg_table (col1 INT)
CATALOG = 'SNOWFLAKE'
EXTERNAL_VOLUME = 'my_external_volume'
BASE_LOCATION = 'my_managed_iceberg_table'
CATALOG_SYNC = 'my_open_catalog_int';
Snowflakeでテーブルを変更すると、その変更は Open Catalog アカウントの外部カタログと自動的に同期されます。Apache Spark™のような他のエンジンは、 Open Catalog に接続することで、テーブルをクエリすることができます。