Flacher Klon für Unity Catalog-Tabellen

Important

Dieses Feature befindet sich in der Public Preview.

Important

Die Unterstützung für Shallow Clone unterscheidet sich bei verwalteten und externen Tabellen im Unity-Katalog. Für verwaltete Tabellen verwenden Databricks Runtime 13.3 LTS und höher und für externe Tabellen Databricks Runtime 14.3 LTS und höher.

Sie können verwaltete Tabellen im Unity Catalog nur mit verwalteten Tabellen im Unity Catalog klonen und externe Unity Catalog-Tabellen zu externen Tabellen des Unity Catalog. Das VACUUM Verhalten unterscheidet sich zwischen verwalteten und externen Tabellen. Siehe Verwenden von VACUUM mit flachen Unity Catalog-Klonen.

Verwenden Sie flachen Klon, um Unity Catalog-Tabellen mit Zugriffssteuerungsberechtigungen unabhängig von ihren Quelltabellen zu erstellen, ohne die zugrunde liegenden Datendateien zu kopieren. Flacher Klon in Unity Catalog wird nur bei Delta Lake-Tabellen unterstützt. Sie können keinen flachen Klon eines Icebergs oder einer anderen Nicht-Delta-Tabelle erstellen.

Informationen zum Klonen einer Tabelle finden Sie unter Klonen einer Tabelle in Azure Databricks.

Einen verwalteten Shallow-Clone im Unity-Katalog erstellen

Erstellen Sie einen flachen Klon einer verwalteten Tabelle im Unity-Katalog.

CREATE TABLE <catalog-name>.<schema-name>.<target-table-name>
SHALLOW CLONE <catalog-name>.<schema-name>.<source-table-name>

Um einen verwalteten flachen Klon im Unity-Katalog zu erstellen, müssen Sie über die folgenden Berechtigungen für die Quell- und Zielressourcen verfügen.

Ressource Berechtigungen sind erforderlich
Quellschema USE SCHEMA
Quellkatalog USE CATALOG
Zielschema USE SCHEMA, CREATE TABLE
Zielkatalog USE CATALOG

Wie bei anderen CREATE TABLE-Anweisungen gehört Ihnen die Zieltabelle, wenn Sie SHALLOW CLONE ausführen. Der Besitzer einer geklonten Zieltabelle steuert die Zugriffsrechte für diese Tabelle unabhängig von der Quelltabelle. Der Besitzer einer geklonten Tabelle unterscheidet sich möglicherweise vom Besitzer einer Quelltabelle.

Erstellen eines externen flachen Klons in Unity Catalog

Erstellen Sie einen externen flachen Klon in Unity Catalog, indem Sie einen externen Speicherort angeben.

CREATE TABLE <catalog-name>.<schema-name>.<target-table-name>
SHALLOW CLONE <catalog-name>.<schema-name>.<source-table-name>
LOCATION 's3://<bucket-name>/<path-name>/<target-table-name>'

Um einen externen flachen Klon im Unity-Katalog zu erstellen, müssen Sie über die folgenden Berechtigungen für die Quell- und Zielressourcen verfügen.

Ressource Berechtigungen sind erforderlich
Quellschema USE SCHEMA
Quellkatalog USE CATALOG
Zielschema USE SCHEMA, CREATE TABLE
Zielkatalog USE CATALOG
Externer Zielort CREATE EXTERNAL TABLE

Arbeiten mit flach geklonten Tabellen im Standardzugriffsmodus

Um einen flachen Klon im Standardzugriffsmodus (früher gemeinsamer Zugriffsmodus) abzufragen, müssen Sie über die folgenden Berechtigungen für die Tabelle und die enthaltenden Ressourcen verfügen:

Ressource Berechtigungen sind erforderlich
Catalog USE CATALOG
Schema USE SCHEMA
Table SELECT

Sie müssen außerdem über MODIFY-Berechtigungen für das Ziel des Klonvorgangs verfügen, um die folgenden Vorgänge auszuführen:

  • INSERT
  • DELETE
  • UPDATE
  • MERGE
  • CREATE TABLE
  • DROP TABLE

Arbeiten mit flach geklonten Tabellen im dedizierten Zugriffsmodus

Beim Arbeiten mit Flachklonen im Unity-Katalog im dedizierten Zugriffsmodus (vormals Einzelbenutzerzugriffsmodus) müssen Sie über Berechtigungen für die Ressourcen für die geklonte Tabellenquelle und die Zieltabelle verfügen.

Für einfache Abfragen müssen Sie zusätzlich zu den erforderlichen Berechtigungen für die Zieltabelle über USE Berechtigungen für den Quellkatalog und das Quellschema sowie über SELECT Berechtigungen für die Quelltabelle verfügen. Bei Abfragen, die Datensätze in die Zieltabelle aktualisieren oder einfügen, müssen Sie auch über Berechtigungen für die Quelltabelle verfügen MODIFY .

Databricks empfiehlt die Verwendung von Unity-Katalogklonen auf der Berechnung mit standardem Zugriffsmodus, da dies unabhängige Änderungen von Berechtigungen für Unity Catalog-Flachklonziele und deren Quelltabellen ermöglicht.

Verwenden von VACUUM mit flachen Unity Catalog-Klonen

Wenn Sie Unity Catalog-Tabellen für die Quelle und das Ziel eines flachen Klonvorgangs verwenden, verwaltet Unity Catalog die zugrunde liegenden Datendateien zum Verbessern der Zuverlässigkeit für die Quelle und das Ziel des Klonvorgangs. Wird VACUUM auf der Quelle eines flachen Klons ausgeführt, wird die geklonte Tabelle nicht abgebrochen.

Wenn VACUUM gültige Dateien für einen bestimmten Aufbewahrungsschwellenwert identifiziert, werden normalerweise nur die Metadaten für die aktuelle Tabelle berücksichtigt. Die Unterstützung von flachen Klonen für Unity Catalog verfolgt jedoch die Beziehungen zwischen allen geklonten Tabellen und den Quelldatendateien, sodass gültige Dateien erweitert werden, um Datendateien einzuschließen, die für die Rückgabe von Abfragen sowohl für flache geklonte Tabellen als auch für die Quelltabelle erforderlich sind.

Bei VACUUM einem flachen Klon im Unity-Katalog ist eine gültige Datendatei eine beliebige Datei innerhalb des angegebenen Aufbewahrungsschwellenwerts für die Quelltabelle oder eine geklonte Tabelle. Verwaltete Tabellen und externe Tabellen weisen geringfügig unterschiedliche Verhaltensweisen auf.

Diese verbesserte Nachverfolgung von Änderungen an Metadaten verändert, wie VACUUM-Vorgänge die zugrunde liegenden Datendateien der Delta-Lake-Tabellen beeinflussen, mit folgendem Verhalten:

  • Bei verwalteten Tabellen können VACUUM-Vorgänge an der Quelle oder am Ziel eines flachen Klon-Vorgangs Datendateien aus der Quelltabelle löschen.
  • Bei externen Tabellen entfernen VACUUM-Vorgänge nur Datendateien aus der Quelltabelle, wenn sie für die Quelltabelle ausgeführt werden.
  • Es werden nur Datendateien entfernt, die nicht als gültig für die Quelltabelle oder irgendeinen flachen Klon für die Quelle gelten.
  • Wenn mehrere flache Klone für eine einzelne Quelltabelle definiert sind, werden bei der Ausführung von VACUUM in einer der geklonten Tabellen keine gültigen Datendateien für andere geklonte Tabellen entfernt.

Hinweis

Databricks empfiehlt, VACUUM niemals mit einer Aufbewahrungseinstellung von weniger als 7 Tagen auszuführen, um zu vermeiden, dass noch laufende Transaktionen mit langer Laufzeit beschädigt werden. Wenn Sie einen niedrigeren Schwellenwert für die Aufbewahrung benötigen, sollten Sie berücksichtigen, wie VACUUM bei flachen Klonen im Unity Catalog sich davon unterscheidet, wie VACUUM andere geklonte Tabellen in Azure Databricks beeinflusst. Weitere Informationen finden Sie unter Klonen einer Tabelle in Azure Databricks.

Auch wenn Sie eine flach geklonte Tabelle löschen, benötigen Sie möglicherweise SELECT Zugriff auf diese flach geklonte Tabelle, um VACUUM für die Basistabelle auszuführen. Databricks liest das Delta-Protokoll des flachen Klons vor, um zu überprüfen, auf welche Basistabellendatendateien der Klon noch verweist, bevor sie vakuumiert werden. Databricks verwaltet diesen Link 7 Tage nach dem Ablegen einer flach geklonten Tabelle zur Unterstützung des UNDROP-Vorgangs. Im Standardzugriffsmodus ist diese Berechtigung jedoch nicht erforderlich.

Löschen der Basistabelle um einen oberflächlichen Klon zu erstellen

Du kannst die Basistabelle einer von Unity Catalog verwalteten Tabelle löschen, selbst wenn Live-Shallow-Klone noch darauf verweisen. Die Klone lesen weiter, bis die Datendateien der Basistabelle gelöscht werden, was sie dann unbrauchbar macht. Du kannst die Basistabelle UNDROP während ihrer Wiederherstellungsphase wiederherstellen, die standardmäßig auf 7 Tage steht und auf Katalog- oder Schema-Ebene auf 0 (um die Wiederherstellung zu deaktivieren) oder 7 bis 30 Tage eingestellt werden kann. Die Konfiguration des Wiederherstellungszeitraums findet in der öffentlichen Vorschau statt. Wenn du die Tabelle nicht wiederherstellst, löscht ein asynchroner Löschprozess seine Datendateien nach Ablauf der Wiederherstellungsphase, sodass die Klone noch eine Weile lesen können, nachdem die Basistabelle nicht mehr wiederherstellbar ist. Um eine gelöschte Basistabelle wiederherzustellen, verwenden Sie UNDROP.

Hinweis

Einige Arbeitsbereiche erzwingen einen Schutz gegen das Löschen (Drop-Time-Schutz) für Basistabellen, die über flache Klone verfügen. Wenn DROP TABLE auf einer solchen Basistabelle mit dem Fehler CANNOT_DROP_BASE_TABLE_REFERENCED_BY_SHALLOW_CLONE fehlschlägt, erzwingt Ihr Arbeitsbereich diesen Schutz. Um die Basistabelle dennoch zu löschen, verwenden Sie DROP TABLE ... FORCE. Wenn man die Basistabelle FORCE weglässt, unterbricht das Referenzieren auf flache Klone. Die Klone versagen bei Operationen, die Daten oder Metadaten lesen (zum Beispiel SELECT, INSERT, UPDATE, DESCRIBE HISTORY, ), CLONEbleiben aber für Metadaten-Operationen sichtbar (zum Beispiel SHOW TABLES, DROP TABLE), sodass Sie sie bereinigen können. Dieser Schutz gilt nur für von Unity Catalog verwaltete Tabellen.

Einschränkungen

  • Shallow Clone wird nur für Delta-Lake-Tabellen unterstützt. Sie können keinen flachen Klon eines Icebergs oder einer anderen Nicht-Delta-Tabelle erstellen.
  • Sie können nicht verwenden CREATE OR REPLACE, um einen vorhandenen flachen Klon zu überschreiben. Verwenden Sie DROP TABLE, gefolgt von CREATE TABLE, oder verwenden Sie einen neuen Tabellennamen.
  • Flache Klone in externen Tabellen müssen externe Tabellen sein. Flache Klone in verwalteten Tabellen müssen verwaltete Tabellen sein.
  • Sie können flache Klonen nicht mit OpenSharing teilen.
  • Sie können flache Klone nicht schachteln und somit keine flachen Klone aus flachen Klonen erstellen.
  • Für externe Tabellen entfernt DROP TABLE die zugrunde liegenden Datendateien nicht, sodass flache Klone nicht betroffen sind, wenn die Quelltabelle gelöscht wird.
  • Für verwaltete Tabellen in Databricks Runtime 13.3 LTS und höher funktionieren flache Klone einer weggelassenen Quelltabelle weiter, bis die Quelldaten gelöscht werden. Siehe Löschen der Basistabelle für einen flachen Klon.