Kataloginhalt organisieren

In diesem Thema finden Sie Anweisungen, wie Sie Namespaces und Tabellen für einen internen Katalog in Snowflake Open Catalog erstellen.

Wichtig

Wenn Sie eine Tabelle in Snowflake Open Catalog löschen, ohne sie zu bereinigen, erstellen Sie keine neue Tabelle mit demselben Namen und Speicherort wie die gelöschte Tabelle. Andernfalls könnten Benutzer auf die ursprünglichen Tabellendaten zugreifen, für die sie keine Zugriffsrechte besitzen dürften. Wenn Sie z. B. Tabelle1 löschen, aber nicht bereinigen, deren Speicherverzeichnis /MyCatalog/Schema1/Tabelle1 lautet, erstellen Sie keine neue Tabelle1 in demselben Tabelle1-Speicherverzeichnis. Wenn Sie eine Tabelle löschen, ohne sie zu bereinigen, bleiben ihre Daten im externen Cloud-Speicher erhalten.

Wichtig

Um sicherzustellen, dass die für einen Katalog definierten Zugriffsrechte korrekt durchgesetzt werden, müssen die folgenden Bedingungen erfüllt sein:

  • Ein Verzeichnis enthält nur die Datendateien, die zu einer einzigen Tabelle gehören.

  • Eine Verzeichnis-Hierarchie entspricht der Namespace-Hierarchie des Katalogs.

Wenn ein Katalog zum Beispiel die folgenden Artikel enthält:

  • Top-Level Namespace namespace1

  • Verschachtelter Namespace namespace1a

  • Eine Kunden-Tabelle, gruppiert unter verschachteltem Namespace namespace1a

  • Eine Tabelle mit Bestellungen, gruppiert unter verschachteltem Namespace namespace1a

Die Hierarchie des Verzeichnisses für den Katalog muss lauten:

  • /namespace1/namespace1a/customers/<files for the customers table *only*>

  • /namespace1/namespace1a/orders/<files for the orders table *only*>

Diese Bedingungen gelten sowohl für interne als auch für externe Kataloge, einschließlich externer Kataloge, die von Snowflake verwaltete Apache Iceberg™-Tabellen enthalten. Wenn Sie eine Tabelle in einem internen Katalog erstellen, verbietet Open Catalog Ihnen, die Tabelle innerhalb des Verzeichnisses oder Unterverzeichnisses einer bestehenden Tabelle zu erstellen. Wenn Sie von Snowflake verwaltete Iceberg-Tabellen in einem externen Katalog erstellen, verbietet Open Catalog nicht, dass sich die Verzeichnisse überschneiden. Wenn Sie diese Tabellen erstellen, verwenden Sie daher den Parameter BASE_LOCATION, um ein eindeutiges übergeordnetes Verzeichnis für jede Tabelle anzugeben. Weitere Informationen finden Sie unter CREATE ICEBERG TABLE (Snowflake als Iceberg-Katalog).

Weitere Informationen über interne und externe Kataloge finden Sie unter Katalogtypen.

Organisieren von Kataloginhalten

Ein Katalog-Administrator kann Open Catalog oder eine Abfrage-Engine eines Drittanbieters verwenden, um den Inhalt des Katalogs wie folgt zu organisieren:

Objekt

Verwendung

Namespace

<ul><li>Open Catalog</li><li>Abfrage von Drittanbietern</li></ul>

Tabelle

Abfrage-Engine eines Drittanbieters

Hinweis

Die Tabellen und Namespaces für einen externen Katalog sind in Open Catalog schreibgeschützt. Wenn Sie Kataloginhalte für einen externen Katalog organisieren müssen, müssen Sie Snowflake verwenden. Weitere Informationen finden Sie unter von Snowflake verwaltete Apache Iceberg™-Tabellen.

Der Beispielcode in diesem Thema zeigt, wie Sie Apache Spark verwenden, um Kataloginhalte zu organisieren. Der Beispielcode ist unter PySpark zu finden.

Einen Namespace erstellen

Dieser Abschnitt enthält Anweisungen zum Erstellen von Namespaces der obersten Ebene oder von verschachtelten Namespaces.

Wichtig

Wenn Sie einen Namespace erstellen, sollten Sie keine Punkte oder Leerzeichen im Namen des Namespaces verwenden.

Erstellen Sie einen Namespace der obersten Ebene

Um einen Top-Level-Namespace zu erstellen, können Sie Apache Spark oder Open Catalog verwenden.

Beispiel: Erstellen eines Top-Level-Namespace mit Apache Spark

Der folgende Beispielcode erstellt einen Top-Level-Namespace namens namespace1 im Katalog catalog1:

spark.sql("use catalog1").show()
spark.sql("CREATE NAMESPACE namespace1")
Copy

Erstellen Sie einen Namespace der obersten Ebene mit Open Catalog

  1. Melden Sie sich an, um den Katalog zu öffnen.

  2. Wählen Sie im Menü auf der linken Seite Kataloge.

  3. Wählen Sie in der Auflistung der Kataloge den Katalog aus, in dem Sie einen Namespace der obersten Ebene erstellen möchten.

  4. Wählen Sie + Namespace.

  5. Geben Sie unter Name einen Namen für den Namespace ein, und wählen Sie dann Senden.

Einen verschachtelten Namespace erstellen

Um einen verschachtelten Namespace zu erstellen, können Sie Apache Spark oder Open Catalog verwenden.

Beispiel: Erstellen eines verschachtelten Namespace mit Apache Spark

Der folgende Beispielcode erstellt einen verschachtelten Namespace namens namespace1a im Katalog catalog1. Dieser verschachtelte Namespace wird unter dem bestehenden Top-Level-Namespace namespace1 erstellt:

spark.catalog.setCurrentCatalog("catalog1")
spark.sql("use catalog1").show()
spark.sql("CREATE NAMESPACE namespace1.namespace1a")
Copy

Erstellen Sie einen verschachtelten Namespace mit Open Catalog

  1. Melden Sie sich an, um den Katalog zu öffnen.

  2. Wählen Sie im Menü auf der linken Seite Kataloge.

  3. Wählen Sie in der Auflistung der Kataloge den Katalog aus, in dem Sie einen verschachtelten Namespace erstellen möchten.

  4. Navigieren Sie auf der Registerkarte Namespaces zu dem übergeordneten Objekt, in dem Sie den verschachtelten Namespace erstellen möchten.

  5. Wählen Sie + Namespace.

  6. Geben Sie unter Name einen Namen für den verschachtelten Namespace ein, und wählen Sie dann Senden.

Tabelle erstellen

In diesem Abschnitt finden Sie Beispiele für die Erstellung von Tabellen mit Apache Spark.

Wichtig

Wenn Sie eine Tabelle in Snowflake Open Catalog löschen, ohne sie zu bereinigen, erstellen Sie keine neue Tabelle mit demselben Namen und Speicherort wie die gelöschte Tabelle. Andernfalls könnten Benutzer auf die ursprünglichen Tabellendaten zugreifen, für die sie keine Zugriffsrechte besitzen dürften. Wenn Sie z. B. Tabelle1 löschen, aber nicht bereinigen, deren Speicherverzeichnis /MyCatalog/Schema1/Tabelle1 lautet, erstellen Sie keine neue Tabelle1 in demselben Tabelle1-Speicherverzeichnis. Wenn Sie eine Tabelle löschen, ohne sie zu bereinigen, bleiben ihre Daten im externen Cloud-Speicher erhalten.

Beispiel: Eine Tabelle erstellen

Der folgende Beispielcode erstellt eine Kunden-Tabelle unter dem verschachtelten Namespace namespace1a im Katalog catalog1. Sie wird mit den Spalten id und custnum erstellt, und der Datentyp für beide Spalten ist integer:

spark.sql("use catalog1").show()
spark.sql ("use namespace1.namespace1a")
spark.sql("CREATE OR REPLACE TABLE customers (id int, custnum int) using iceberg")
Copy

Beispiel: Zeilen in eine Tabelle einfügen

Der folgende Beispielcode fügt eine Zeile in die Kunden-Tabelle ein:

spark.sql("use catalog1").show()
spark.sql ("use namespace1.namespace1a")
spark.sql("INSERT INTO customers VALUES (123,456)")
Copy