Eine Snowflake-verwaltete Tabelle mit Snowflake Open Catalog synchronisieren

Um eine von Snowflake verwaltete Apache Iceberg™-Tabelle mit einer Drittanbieter-Engine wie Apache Spark™ abzufragen, können Sie die Tabelle mit Snowflake Open Catalog synchronisieren.

Unter diesem Thema erfahren Sie, wie Sie eine von Snowflake verwaltete Iceberg-Tabelle mit Snowflake Open Catalog über eine Katalogintegration in Snowflake und einen externen Katalog in Open Catalog synchronisieren.

Schritt 1: Erstellen Sie ein externes Volume

Wenn Sie noch keins haben, beginnen Sie mit der Erstellung eines externen Volume in Snowflake, das Zugriff auf den Speicherort in der Cloud bietet, an dem Sie Ihre Tabellendaten und Metadaten speichern möchten.

Füllen Sie die Anweisungen für Ihren Cloudspeicherdienst aus:

Schritt 2: Konfigurieren Sie die Ressourcen von Open Catalog

Als Nächstes führen Sie die Schritte in diesem Abschnitt aus, um einen externe Katalog und eine Dienstverbindung in Ihrem Open Catalog-Konto zu erstellen.

  1. Folgen Sie den Anweisungen unter Katalog erstellen, um einen externen Katalog in Ihrem Open Catalog-Konto zu erstellen. Stellen Sie sicher, dass die folgenden Einstellungen für den externen Katalog konfiguriert sind:

    Open Catalog synchronisiert Ihre von Snowflake verwalteten Tabellen mit diesem externen Katalog.

  2. Wenn Sie noch keine Dienstverbindung für Snowflake haben, folgen Sie den Anweisungen unter Konfigurieren Sie eine Dienstverbindung, um eine Verbindung für die Snowflake-Engine in Ihrem Open Catalog-Konto zu erstellen.

  3. Konfigurieren Sie eine Katalogrolle für Ihren externen Katalog mit Berechtigungen, die den Zugriff auf Ihren externen Katalog ermöglichen. Anweisungen finden Sie unter Berechtigungen für einen Katalog erteilen.

    Die Katalogrolle muss über die folgenden Berechtigungen für den Katalog verfügen:

    • TABLE_CREATE

    • TABLE_WRITE_PROPERTIES

    • TABLE_DROP

    • NAMESPACE_CREATE

    • NAMESPACE_DROP

    Sie können entweder der Katalogrolle jede dieser Berechtigungen erteilen oder aber die Berechtigung CATALOG_MANAGE_CONTENT erteilen, die diese Berechtigungen beinhaltet. Weitere Informationen finden Sie unter Katalogberechtigungen für Snowflake Open Catalog.

  4. Verbinden Sie die Katalogrolle mit der Prinzipalrolle für Ihre Dienstverbindung. Damit kann die Dienstverbindung auf den Katalog zugreifen. Anweisungen finden Sie unter Einer Prinzipalrolle eine Katalogrolle zuweisen.

Schritt 3: Eine Katalogintegration für Open Catalog erstellen

Erstellen Sie eine Katalogintegration für Open Catalog mit dem Befehl CREATE CATALOG INTEGRATION (Snowflake Open Catalog). Geben Sie für WAREHOUSE den Namen des externen Katalogs an, den Sie in Ihrem Open Catalog Konto konfiguriert haben.

Informationen zur Behebung von Problemen bei der Erstellung einer Katalogintegration finden Sie unter Sie können keine Katalogintegration für Open Catalog erstellen.

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;
Copy

Bemerkung

Sie können diese Katalogintegration verwenden, um eine oder mehrere von Snowflake verwaltete Tabellen zu synchronisieren.

Schritt 4: Eine Snowflake-verwaltete Tabelle erstellen

Erstellen Sie eine von Snowflake verwaltete Iceberg-Tabelle mit dem Befehl CREATE ICEBERG TABLE (Snowflake als Iceberg-Katalog).

Geben Sie für den Parameter CATALOG_SYNC den Namen Ihrer Katalogintegration für Open Catalog an.

Informationen zur Behebung von Problemen bei der Erstellung einer von Snowflake verwalteten Tabelle finden Sie unter Sie können keine von Snowflake verwaltete Tabelle erstellen.

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';
Copy

Wenn Sie die Tabelle in Snowflake ändern, werden die Änderungen automatisch mit dem externen Katalog in Ihrem Open Catalog-Konto synchronisiert. Andere Engines wie Apache Spark™ können die Tabelle abfragen, indem sie eine Verbindung zu Open Catalog herstellen.