Erste Schritte mit Snowflake Open Catalog

Übersicht

Snowflake Open Catalog ist ein offener Katalog für Apache Iceberg™. Open Catalog ist als SaaS-Dienst verfügbar, der auf Snowflake verwaltet wird. Es ist auch als Open Source-Code verfügbar, den Sie selbst erstellen und einsetzen können. Open Catalog bietet eine Implementierung des Apache Iceberg REST-Katalogs mit systemübergreifender Sicherheit durch rollenbasierte Zugriffssteuerung.

In diesem Tutorial lernen Sie, wie Sie mit dem auf Snowflake verwalteten Open Catalog beginnen.

Was Sie lernen werden

  • Wie Sie ein neues Open Catalog-Konto erstellen.

  • So erstellen Sie einen neuen Iceberg-Katalog im Open Catalog-Konto und sichern ihn mit RBAC.

  • So verwenden Sie Apache Spark™, um Tabellen im Katalog zu erstellen und Abfragen durchzuführen.

  • Wie Sie Snowflake verwenden, um Abfragen auf Tabellen im Katalog durchzuführen.

  • So spiegeln oder veröffentlichen Sie in Snowflake verwaltete Iceberg-Tabellen in Open Catalog.

Was Sie brauchen

  • ORGADMIN-Berechtigungen in Ihrer Snowflake-Organisation (um ein neues Open Catalog-Konto zu erstellen).

  • ACCOUNTADMIN-Berechtigungen in Ihrem Snowflake-Konto (zur Verbindung mit dem Open Catalog-Konto). Dieses Snowflake-Konto muss nicht mit dem Konto der Snowflake-Organisation identisch sein.

Was Sie tun werden

Sie werden zwei Anwendungsfälle abschließen:

  • Anwendungsfall 1: Erstellen Sie einen Katalog in Open Catalog, erstellen Sie eine Tabelle mit Apache Spark, und fragen Sie die Tabelle mit Apache Spark und Snowflake ab.

    Abbildung 1: Diagramm

  • Anwendungsfall 2: Erstellen Sie mit Snowflake eine Apache Iceberg-Tabelle im Snowflake DB-Konto, und veröffentlichen Sie sie in Open Catalog, damit Apache Spark Abfragen darauf ausführen kann.

    Abbildung 2: Diagramm

Umgebung einrichten

Installieren Sie Conda, Spark und Jupyter auf Ihrem Laptop

In diesem Tutorial können Sie mit Conda ganz einfach eine Entwicklungsumgebung erstellen und die erforderlichen Pakete herunterladen. Dies ist nur erforderlich, wenn Sie den Anwendungsfall 2 für die Verwendung von Apache Spark™ befolgen, um von Snowflake verwaltete Apache Iceberg™-Tabellen zu lesen. Dies ist nicht erforderlich, um Iceberg-Tabellen auf Snowflake zu erstellen oder zu verwenden.

  1. Um Conda zu installieren, verwenden Sie die Anweisungen für Ihr OS:

  2. Erstellen Sie eine Datei namens environment.yml mit folgendem Inhalt:

    name: iceberg-lab
    channels:
      - conda-forge
    dependencies:
      - findspark=2.0.1
      - jupyter=1.0.0
      - pyspark=3.5.0
      - openjdk=11.0.13
    
    Copy
  3. Um die benötigte Umgebung zu erstellen, führen Sie Folgendes in Ihrer Shell aus:

    conda env create -f environment.yml
    
    Copy

Ein Konto für Open Catalog erstellen

Ein Open Catalog-Konto kann nur von einem ORGADMIN erstellt werden.

  1. Wählen Sie in Snowsight im Navigationsbereich Admin > Konten.

  2. Wählen Sie in der Dropdown-Liste + Konto die Option Snowflake Open Catalog-Konto erstellen.

  3. Füllen Sie das Dialogfeld Snowflake Open Catalog-Konto erstellen aus:

    • Cloud: Der Cloud-Anbieter, bei dem Sie Apache Iceberg™-Tabellen speichern möchten.

    • Region: Die Region, in der Sie Iceberg-Tabellen speichern möchten.

    • Edition: Die Edition Ihres Open Catalog-Kontos.

  4. Wählen Sie Nächste.

  5. Füllen Sie im Dialogfeld „Neues Konto erstellen“ die Felder „Kontoname“, „Benutzername“, „Kennwort“ und „E-Mail“ aus.

  6. Wählen Sie Konto einrichten. Ihr neues Open Catalog-Konto wird erstellt, und ein Bestätigungsfenster wird angezeigt.

  7. Wählen Sie im Bestätigungsfeld die Option Kontosuche URL, um die Kontosuche URL in Ihrem Browser zu öffnen.

  8. Setzen Sie ein Lesezeichen für den Speicherort des Kontos URL. Wenn Sie sich bei Open Catalog anmelden, müssen Sie die Konto-Locator-URL angeben.

Melden Sie sich bei der Weboberfläche von Open Catalog an

  1. Klicken Sie auf das Konto URL, das Sie nach der Einrichtung des Kontos per E-Mail erhalten haben, OR gehen Sie zu https://app.snowflake.com.

  2. Klicken Sie auf Bei einem anderen Konto anmelden, und melden Sie sich mit dem zuvor erstellten Konto für Open Catalog an.

Anwendungsfall 1: Erstellen Sie eine Tabelle mit Apache Spark™

IAM-Richtlinie erstellen, die Zugriff auf den S3-Speicherort gewährt

Wenn Sie noch keine haben, erstellen Sie zunächst eine IAM-Richtlinie, die den Zugriff auf Ihren S3-Speicherort gewährt. Anweisungen zur Erstellung dieser Richtlinie finden Sie unter [Erstellen einer IAM-Richtlinie, die Zugriff auf Ihren S3-Speicherort gewährt] (https://other-docs.snowflake.com/en/opencatalog/create-catalog#step-1-create-an-iam-policy-that-grants-access-to-your-s3-location).

-IAM Rolle erstellen

Falls Sie noch keine haben, erstellen Sie eine AWS IAM-Rolle für Open Catalog, um Berechtigungen für Ihren S3-Bucket zu vergeben. Anweisungen finden Sie unter [Erstellen einer IAM-Rolle] (https://other-docs.snowflake.com/en/opencatalog/create-catalog#step-2-create-an-iam-role). Wenn Sie in den Anweisungen aufgefordert werden, eine Richtlinie auszuwählen, wählen Sie die Richtlinie IAM, die den Zugriff auf Ihren S3-Speicherort gewährt.

Erstellen Sie einen internen Katalog in Open Catalog

Sie können einen internen Katalog in Ihrem Open Catalog-Konto verwenden, um Tabellen zu erstellen, sie abzufragen und DML auf den Tabellen mit Apache Spark™ oder anderen Abfrage-Engines laufen zu lassen.

  1. Melden Sie sich bei Ihrem neuen Open Catalog-Konto an.

  2. Um einen neuen Katalog zu erstellen, wählen Sie im linken Fensterbereich Kataloge.

  3. Wählen Sie +Katalog in der oberen rechten Ecke.

  4. Geben Sie im Dialog Katalog erstellen die folgenden Details ein:

    • Standard-Speicherort: Der Speicherort, an dem die Tabellendaten gespeichert werden.

    • Zusätzliche Speicherorte (optional): Eine durch Komma getrennte Liste mit mehreren Speicherorten. Dies wird hauptsächlich verwendet, wenn Sie Tabellen von verschiedenen Speicherorten in diesem Katalog importieren müssen. Sie können das Feld leer lassen.

    • S3-Rollen-ARN: Eine AWS-Rolle, die Lese- und Schreibzugriff auf Speicherorte hat. Geben Sie die ARN der IAM-Rolle ein, die Sie für Open Catalog erstellt haben.

    • Externe ID: (optional): Ein Geheimnis, das Sie beim Aufbau einer Vertrauensbeziehung zwischen Katalogbenutzer und Speicherkonto angeben möchten. Wenn Sie dies auslassen, wird es automatisch generiert. Verwenden Sie für dieses Tutorial eine einfache Zeichenfolge wie abc123.

  5. Wählen Sie Erstellen. Ihr Katalog wird erstellt, und die folgenden Werte werden zu Ihrem Katalog hinzugefügt:

    • Der IAM-Benutzer-ARN für Ihr Open Catalog-Konto.

    • Wenn Sie nicht selbst eine externe ID eingegeben haben, wird automatisch eine externe ID für Ihren Katalog generiert.

    Sie werden diese Werte im nächsten Abschnitt benötigen, wenn Sie eine vertrauenswürdige Beziehung erstellen.

Erstellen Sie eine vertrauenswürdige Beziehung

Nachdem Sie einen Katalog erstellt haben, müssen Sie eine vertrauenswürdige Beziehung einrichten, damit die in der obigen Konfiguration angegebene S3-Rolle Daten im Speicherort lesen und schreiben kann. Beachten Sie, dass Sie zur Durchführung dieser Aufgabe den S3 IAM-Benutzer-ARN und die externe ID für Ihren Katalog benötigen.

  1. Nachdem der Katalog erstellt wurde, wählen Sie Ihren Katalog in der Liste aus, um die S3 IAM-Benutzer-ARN und die externe ID für Ihren Katalog anzuzeigen.

  2. Um die vertrauenswürdige Beziehung herzustellen, führen Sie Schritt 5: IAM-Benutzerberechtigungen für den Zugriff auf Bucket-Objekte gewähren aus.

In dem in dieser Anweisung gezeigten JSON-Objekt:

  • Für <open_catalog_user_arn> verwenden Sie den Wert unter IAM-Benutzer-ARN im Open Catalog UI.

  • Für <open_catalog_external_id> verwenden Sie den Wert unter externe ID im Open Catalog UI.

Erstellen Sie eine neue Verbindung für Apache Spark™

Erstellen Sie eine neue Verbindung (Paar client_id/client_secret) für Apache Spark, um Abfragen auf dem soeben erstellten Katalog durchzuführen.

  1. Wählen Sie in Open Catalog im linken Fensterbereich die Registerkarte Verbindungen und dann oben rechts + Verbindung.

  2. Im Dialog Dienstverbindung konfigurieren erstellen Sie eine neue Hauptrolle oder wählen eine der verfügbaren Rollen aus.

  3. Wählen Sie Erstellen.

  4. Wählen Sie im Dialogfeld Dienstverbindung konfigurieren die Option Kopieren im Feld Als <CLIENT-ID>:<SECRET>, um die Client-ID und das Client-Geheimnis in einen Texteditor zu kopieren.

    Wichtig

    Sie werden diese Zeichenfolgen später nicht mehr vom Open Catalog Service abrufen können, also müssen Sie sie jetzt kopieren. Sie verwenden diese Zeichenfolgen, wenn Sie Spark konfigurieren.

Einrichten von Katalogberechtigungen für die Verbindung

Jetzt erteilen Sie der Dienstverbindung Berechtigungen, damit sie auf den Katalog zugreifen kann. Ohne Zugriffsrechte kann die Dienstverbindung keine Abfragen im Katalog durchführen.

  1. Wählen Sie im Navigationsbereich Kataloge, und wählen Sie dann Ihren Katalog in der Liste aus.

  2. Um eine neue Rolle zu erstellen, wählen Sie die Registerkarte Rollen.

  3. Wählen Sie + Katalogrolle.

  4. Geben Sie im Dialog Katalogrolle erstellen für Name den Wert spark_catalog_role ein.

  5. Wählen Sie unter Berechtigungen die Option CATALOG_MANAGE_CONTENT, und wählen Sie dann Erstellen.

    Damit erhält die Rolle die Berechtigung, Tabellen zu erstellen, zu lesen und zu schreiben.

  6. Wählen Sie Berechtigung für die Prinzipalrolle.

  7. Wählen Sie im Dialog Katalogrolle zuweisen für Prinzipalrolle, um Berechtigung zu erhalten die Rolle my_spark_admin_role.

  8. Für Zu gewährende Katalogrolle wählen Sie spark_catalog_role und dann Gewähren.

Als Ergebnis dieser Prozedur wird die Rolle spark_catalog_role der Rolle my_spark_admin_role zugewiesen, die Ihnen Admin-Berechtigungen für die Spark-Verbindung gibt, die Sie in der vorherigen Prozedur erstellt haben.

Spark einrichten

Führen Sie von Ihrem Terminal aus die folgenden Befehle aus, um die virtuelle Umgebung zu aktivieren, die Sie bei der Einrichtung erstellt haben, und öffnen Sie Jupyter Notebooks:

conda activate iceberg-lab
jupyter notebook
Copy

Spark konfigurieren

Um Spark zu konfigurieren, führen Sie diese Befehle in einem Jupyter Notebook aus.

Weitere Informationen, einschließlich Beschreibungen der Parameter, finden Sie unter Registrieren einer Dienstverbindung in Spark.

import os
os.environ['SPARK_HOME'] = '/Users/<username>/opt/anaconda3/envs/iceberg-lab/lib/python3.12/site-packages/pyspark'

import pyspark
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName('iceberg_lab') \
.config('spark.jars.packages', 'org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.1,software.amazon.awssdk:bundle:2.20.160,software.amazon.awssdk:url-connection-client:2.20.160') \
.config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
.config('spark.sql.defaultCatalog', 'opencatalog') \
.config('spark.sql.catalog.opencatalog', 'org.apache.iceberg.spark.SparkCatalog') \
.config('spark.sql.catalog.opencatalog.type', 'rest') \
.config('spark.sql.catalog.opencatalog.header.X-Iceberg-Access-Delegation','vended-credentials') \
.config('spark.sql.catalog.opencatalog.uri','https://<open_catalog_account_identifier>.snowflakecomputing.com/polaris/api/catalog') \
.config('spark.sql.catalog.opencatalog.credential','<client_id>:<client_secret>') \
.config('spark.sql.catalog.opencatalog.warehouse','<catalog_name>') \
.config('spark.sql.catalog.opencatalog.scope','PRINCIPAL_ROLE:<principal_role_name>') \
.getOrCreate()

#Show namespaces
spark.sql("show namespaces").show()

#Create namespace
spark.sql("create namespace spark_demo")

#Use namespace
spark.sql("use namespace spark_demo")

#Show tables; this will show no tables since it is a new namespace
spark.sql("show tables").show()

#create a test table
spark.sql("create table test_table (col1 int) using iceberg");

#insert a record in the table
spark.sql("insert into test_table values (1)");

#query the table
spark.sql("select * from test_table").show();
Copy

Optional: Regionenübergreifender S3

Wenn sich Ihr Konto für den Speicherort in einer anderen Region befindet als Ihr Spark-Client, müssen Sie eine zusätzliche Einstellung für die Konfiguration von Spark vornehmen:

.config('spark.sql.catalog.opencatalog.client.region','<region_code>') \
Copy

Eine Liste der Codes für die Regionen finden Sie unter Regionale Endpunkte in der Dokumentation AWS.

Das folgende Codebeispiel wurde geändert, um die S3-Region einzubeziehen:

import pyspark
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName('iceberg_lab') \
.config('spark.jars.packages', 'org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.1,software.amazon.awssdk:bundle:2.20.160,software.amazon.awssdk:url-connection-client:2.20.160') \
.config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
.config('spark.sql.defaultCatalog', 'opencatalog') \
.config('spark.sql.catalog.opencatalog', 'org.apache.iceberg.spark.SparkCatalog') \
.config('spark.sql.catalog.opencatalog.type', 'rest') \
.config('spark.sql.catalog.opencatalog.header.X-Iceberg-Access-Delegation','vended-credentials') \
.config('spark.sql.catalog.opencatalog.uri','https://<open_catalog_account_identifier>.snowflakecomputing.com/polaris/api/catalog') \
.config('spark.sql.catalog.opencatalog.credential','<client_id>:<secret>') \
.config('spark.sql.catalog.opencatalog.warehouse','<catalog_name>') \
.config('spark.sql.catalog.opencatalog.scope','PRINCIPAL_ROLE:<principal_role_name>') \
.config('spark.sql.catalog.opencatalog.client.region','<region_code>') \
.getOrCreate()
Copy

Abfrage der Tabellen mit Snowflake

Sie können ein Objekt zur Integration von Katalogen in Snowflake erstellen und eine Apache Iceberg™-Tabelle in Snowflake erstellen, die die Tabelle in Open Catalog darstellt. Im folgenden Beispiel erstellen Sie eine Iceberg-Tabelle in Snowflake, die die gerade von Spark erstellte Iceberg-Tabelle im internen Katalog in Open Catalog repräsentiert.

Sie können die gleichen Anmeldeinformationen für die Spark-Verbindung verwenden oder eine neue Snowflake-Verbindung erstellen. Wenn Sie eine neue Verbindung erstellen, müssen Sie die Rollen und Berechtigungen entsprechend einstellen.

  1. Erstellen Sie ein Objekt für die Integration eines Katalogs:

    CREATE OR REPLACE CATALOG INTEGRATION demo_open_catalog_int 
    CATALOG_SOURCE=POLARIS 
    TABLE_FORMAT=ICEBERG 
    CATALOG_NAMESPACE='<catalog_namespace>' 
    REST_CONFIG = (
    CATALOG_URI ='https://<account>.snowflakecomputing.com/polaris/api/catalog' 
    WAREHOUSE = <catalog_name>
    )
    REST_AUTHENTICATION = (
    TYPE=OAUTH 
    OAUTH_CLIENT_ID='<client_id>' 
    OAUTH_CLIENT_SECRET='<secret>' 
    OAUTH_ALLOWED_SCOPES=('PRINCIPAL_ROLE:ALL') 
    ) 
    ENABLED=true;
    
    # the <catalog_namespace> created in previous step is spark_demo.
    # the <catalog_name> created in previous step is demo_catalog.
    
    Copy
  2. Erstellen Sie die Tabellendarstellung in Snowflake unter Verwendung der oben erstellten Katalogintegration, und fragen Sie die Tabelle ab:

    create or replace iceberg table test_table
      catalog = 'demo_open_catalog_int'
      external_volume = '<external_volume>'
      catalog_table_name = 'test_table'
    
    select * from test_table;
    
    Copy

Anwendungsfall 2: Synchronisierung von Apache Iceberg™-Tabellen von Snowflake zu Open Catalog

Wenn Sie Iceberg-Tabellen in Snowflake haben, können Sie diese mit Open Catalog synchronisieren, damit andere Suchmaschinen diese Tabellen abfragen können.

Einen externen Katalog in Open Catalog erstellen

Die Iceberg-Tabellen von Snowflake können in einem externen Katalog in Ihrem Open Catalog-Konto synchronisiert werden.

  1. Melden Sie sich bei Ihrem neuen Open Catalog-Konto an.

  2. Um einen neuen Katalog zu erstellen, wählen Sie im linken Fensterbereich Kataloge.

  3. Wählen Sie +Katalog in der oberen rechten Ecke.

  4. Geben Sie im Dialog Katalog erstellen die folgenden Details ein:

    • Name: Name des Katalogs demo_catalog_ext.

    • Setzen Sie den Schalter für Extern auf Ein.

    • Standard-Speicherort: Der Speicherort, an dem die Tabellendaten gespeichert werden.

      Hinweis

      Sie müssen einen anderen Speicherort verwenden als den internen Katalog, den Sie im Anwendungsfall 1 dieses Tutorials erstellt haben. Um sicherzustellen, dass die für einen Katalog definierten Zugriffsrechte korrekt durchgesetzt werden, können zwei verschiedene Kataloge keine überlappenden Speicherorte haben.

    • Zusätzliche Speicherorte (optional): Eine durch Komma getrennte Liste mit mehreren Speicherorten. Dies wird hauptsächlich verwendet, wenn Sie Tabellen von verschiedenen Speicherorten in diesem Katalog importieren müssen. Sie können das Feld leer lassen.

    • S3-Rollen-ARN: Eine AWS-Rolle, die Lese- und Schreibzugriff auf Speicherorte hat.

    • Externe ID: (optional): Ein Geheimnis, das Sie beim Aufbau einer Vertrauensbeziehung zwischen Katalogbenutzer und Speicherkonto angeben möchten. Wenn Sie dies auslassen, wird es automatisch generiert. Verwenden Sie für dieses Tutorial eine einfache Zeichenfolge wie abc123.

  5. Wählen Sie Erstellen. Die folgenden Werte werden zu Ihrem Katalog hinzugefügt:

    • Der IAM-Benutzer-ARN für Ihr Open Catalog-Konto.

    • Wenn Sie nicht selbst eine externe ID eingegeben haben, wird automatisch eine externe ID für Ihren Katalog generiert.

Eine Verbindung für Snowflake erstellen

  1. Wählen Sie in Open Catalog im linken Fensterbereich die Registerkarte Verbindungen und dann oben rechts + Verbindung.

  2. Im Dialog Dienstverbindung konfigurieren erstellen Sie eine neue Hauptrolle oder wählen eine der verfügbaren Rollen aus.

  3. Wählen Sie Erstellen.

  4. Wählen Sie im Dialogfeld Dienstverbindung konfigurieren die Option Kopieren im Feld Als <CLIENT-ID>:<SECRET>, um die Client-ID und das Client-Geheimnis in einen Texteditor zu kopieren.

    Wichtig

    Sie werden diese Zeichenfolgen später nicht mehr vom Open Catalog Service abrufen können, also müssen Sie sie jetzt kopieren. Sie verwenden diese Zeichenfolgen, wenn Sie Spark konfigurieren.

Einrichten von Katalogberechtigungen

Gehen Sie wie folgt vor, um die Berechtigungen für den externen Katalog einzustellen, damit die Verbindung mit Snowflake die richtigen Berechtigungen für einen externen Katalog hat:

  1. Wählen Sie im Navigationsbereich Kataloge, und wählen Sie dann Ihren externen Katalog in der Liste aus.

  2. Um eine neue Rolle zu erstellen, wählen Sie die Registerkarte Rollen.

  3. Wählen Sie + Katalogrolle.

  4. Geben Sie im Dialog Katalogrolle erstellen für Name den Wert spark_catalog_role ein.

  5. Wählen Sie unter Berechtigungen die Option CATALOG_MANAGE_CONTENT, und wählen Sie dann Erstellen.

    Damit erhält die Rolle die Berechtigung, Tabellen zu erstellen, zu lesen und zu schreiben.

  6. Wählen Sie Berechtigung für die Prinzipalrolle.

  7. Wählen Sie im Dialog Katalogrolle zuweisen für Prinzipalrolle, um Berechtigung zu erhalten die Rolle my_spark_admin_role.

  8. Für Zu gewährende Katalogrolle wählen Sie spark_catalog_role und dann Gewähren.

Erstellen Sie ein Objekt zur Integration eines Katalogs in Snowflake

  1. In Snowflake erstellen Sie ein Objekt zur Integration eines Katalogs mit dem Befehl CREATE CATALOG INTEGRATION (Snowflake Open Catalog):

    CREATE OR REPLACE CATALOG INTEGRATION demo_open_catalog_ext 
      CATALOG_SOURCE=POLARIS 
      TABLE_FORMAT=ICEBERG 
      CATALOG_NAMESPACE='default' 
      REST_CONFIG = (
        CATALOG_URI ='https://<account>.snowflakecomputing.com/polaris/api/catalog' 
        WAREHOUSE = '<catalog_name>'
      )
      REST_AUTHENTICATION = (
        TYPE=OAUTH 
        OAUTH_CLIENT_ID='<client_id>' 
        OAUTH_CLIENT_SECRET='<secret>' 
        OAUTH_ALLOWED_SCOPES=('PRINCIPAL_ROLE:ALL') 
      ) 
      ENABLED=true;
    
    # the <catalog_name> created in previous step is demo_catalog_ext.
    
    Copy

    In diesem Code wird jede Änderung einer verwalteten Iceberg-Tabelle im Snowflake-Schema polaris_demo.iceberg mit Open Catalog synchronisiert, damit andere Engines diese Tabellen abfragen können.

  2. Erstellen Sie eine verwaltete Iceberg-Tabelle, und synchronisieren Sie sie von Snowflake zu Open Catalog. Weitere Informationen dazu finden Sie unter:

    Wichtig

    Die STORAGE_BASE_URL für das externe Volume muss mit dem Standard-Speicherort für den externen Katalog übereinstimmen, den Sie in Open Catalog erstellt haben.

    use database polaris_demo;
    use schema iceberg;
    
    # Note that the storage location for this external volume will be different than storage location for external volume in use case 1
    
    CREATE OR REPLACE EXTERNAL VOLUME snowflake_demo_ext
      STORAGE_LOCATIONS =
          (
            (
                NAME = '<storage_location_name>'
                STORAGE_PROVIDER = 'S3'
                STORAGE_BASE_URL = 's3://<s3_location>'
                STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::<aws_acct>:role/<rolename>'
                STORAGE_AWS_EXTERNAL_ID = '<external_id>'
            )
          );
    
    CREATE OR REPLACE ICEBERG TABLE test_table_managed (col1 int)
      CATALOG = 'SNOWFLAKE'
      EXTERNAL_VOLUME = 'snowflake_demo_ext'
      BASE_LOCATION = 'test_table_managed'
      CATALOG_SYNC = 'demo_open_catalog_ext'; 
    
    Copy

Hinweis

Wenn die Tabelle nicht mit Open Catalog synchronisiert werden kann, führen Sie die Systemfunktion SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG aus, um den Grund für die fehlgeschlagene Synchronisierung zu ermitteln. Weitere Informationen finden Sie unter SYSTEM$SEND_NOTIFICATIONS_TO_CATALOG.

Fazit

Sie können einen internen Katalog in Ihrem Open Catalog-Konto verwenden, um Tabellen zu erstellen, sie abzufragen und DML auf den Tabellen mit Apache Spark™ oder anderen Abfrage-Engines laufen zu lassen.

In Snowflake können Sie eine Katalogintegration für Open Catalog erstellen, um die folgenden Aufgaben durchzuführen:

  • Führen Sie Abfragen auf von Open Catalog verwalteten Tabellen aus.

  • Synchronisieren Sie Snowflake-Tabellen mit einem externen Katalog in Ihrem Open Catalog-Konto.

Zusammenfassung

  • Erstellen Sie ein Open Catalog-Konto.

  • Erstellen Sie einen internen Katalog in Ihrem Open Catalog-Konto.

  • Verwenden Sie Spark, um Tabellen im internen Katalog zu erstellen.

  • Verwenden Sie Snowflake, um eine Katalogintegration für Open Catalog zu erstellen, um Abfragen auf einer Tabelle durchzuführen, die in einem internen Katalog in Ihrem Open Catalog-Konto erstellt wurde.

  • Erstellen Sie einen externen Katalog in Ihrem Open Catalog-Konto.

  • Erstellen Sie in Snowflake eine verwaltete Apache Iceberg™-Tabelle, und synchronisieren Sie diese mit dem externen Katalog in Ihrem Open Catalog-Konto.