SYNC
Gilt für: Databricks SQL Databricks Runtime Nur Unity Catalog
Verwenden Sie den Befehl SYNC
, um für externe Tabellen im Hive-Metastore ein Upgrade auf externe Tabellen in Unity Catalog durchzuführen. Sie können SYNC
auch verwenden, um für verwaltete Hive-Tabellen, die außerhalb des (manchmal als DBFS-Stamm bezeichneten) Datenspeichers des Databricks-Arbeitsbereichs gespeichert sind, ein Upgrade auf externe Tabellen in Unity Katalog durchzuführen. Der Befehl kann jedoch nicht zum Upgraden verwalteter Hive-Tabellen verwendet werden, die im Arbeitsbereichsspeicher gespeichert sind. Verwenden Sie zum Upgraden dieser Tabellen CREATE TABLE CLONE.
Mit SYNC
können Sie auf der Grundlage vorhandener Hive-Metastore-Tabellen neue Tabellen in Unity Catalog erstellen und die Unity Catalog-Tabellen aktualisieren, wenn die Quelltabellen im Hive-Metastore geändert werden.
Der SYNC
-Befehl kann mithilfe der SYNC SCHEMA
-Syntax auf Schemaebene oder mithilfe der SYNC TABLE
-Syntax für eine einzelne Tabelle ausgeführt werden.
Der Befehl führt einen Schreibvorgang (ALTER TABLE
) für jede Quelltabelle aus, die aktualisiert wird, um einige zusätzliche Tabelleneigenschaften für die Buchführung hinzuzufügen.
Bei Delta-Tabellen muss zum Ausführen des Schreibvorgangs der Cluster oder SQL Warehouse, der oder das den Befehl ausführt, Schreibzugriff auf den Tabellenspeicherort haben.
In Databricks Runtime 12.2 LTS oder höher kann dieses Verhalten deaktiviert werden, indem die Spark-Konfiguration spark.databricks.sync.command.disableSourceTableWrites
auf true
festgelegt wird, bevor Sie den Befehl SYNC
ausführen. Wenn dieser Wert auf true
festgelegt ist, fügt SYNC
keine neuen Tabelleneigenschaften hinzu und erkennt daher möglicherweise nicht, ob die Tabelle zuvor auf den Unity-Katalog aktualisiert wurde.
In diesem Fall basiert sie ausschließlich auf dem Tabellennamen, um festzustellen, ob die Tabelle zuvor auf den Unity-Katalog aktualisiert wurde.
Wenn die Quelltabelle seit dem letzten SYNC-Befehl umbenannt wurde, muss der Benutzer die Zieltabelle manuell umbenennen, bevor der SYNC-Befehl erneut ausgeführt wird, wenn die Konfiguration true
ist.
Wichtig
Wenn ein SYNC
-Befehl ausgeführt wird, fügt der Vorgang SET TBLPROPERTIES
eine Tabelleneigenschaft hinzu, die den Externen Tabellenverweis für den Unity-Katalog angibt. Dieser Vorgang berechnet eine neue Delta-Momentaufnahme und fügt einen neuen Eintrag zum Delta-Protokoll der Tabelle hinzu, der in den Zieltabellenpfad im Cloudspeicher geschrieben wird.
Syntax
SYNC { SCHEMA target_schema [AS EXTERNAL] FROM source_schema |
TABLE target_table [AS EXTERNAL] FROM source_table }
[SET OWNER principal]
[DRY RUN]
Parameter
SCHEMA
SYNC
für alle Tabellen innerhalb eines Schemas.-
Ein vorhandenes Schema in Unity Catalog, in dem der Benutzer zum Erstellen von Tabellen autorisiert ist.
-
Ein vorhandenes Schema im
hive_metastore
-Katalog, dessen Besitzer der Benutzer ist.
-
TABLE
SYNC
für eine einzelne Tabelle.-
Eine neue oder vorhandene Tabelle in Unity Catalog in einem Schema, in dem der Benutzer zum Erstellen von Tabellen autorisiert ist. Wenn die Tabelle bereits vorhanden ist, wird sie ersetzt, um
source_table
zu entsprechen, und der Benutzer muss auch Besitzer der Tabelle sein. Wenn die Datei nicht vorhanden ist, wird sie erstellt. -
Eine vorhandene Tabelle in
hive_metastore
, für die der Benutzer als Besitzer fungiert.
-
-
Legen Sie optional den Besitzer der aktualisierten Tabellen in Unity Catalog auf
principal
fest. Der aktuelle Benutzer ist standardmäßig der Besitzer. AS EXTERNAL
Synchronisieren Sie mithilfe von
SYNC
eine verwaltete Hive-Tabelle oder ein Schema, die bzw. das außerhalb des (manchmal als DBFS-Stamm bezeichneten) Datenspeichers des Databricks-Arbeitsbereichs gespeichert ist, mit externen Tabellen in Unity Katalog.AS EXTERNAL
kann nicht zum Upgraden verwalteter Hive-Tabellen verwendet werden, die im Arbeitsbereichsspeicher gespeichert sind.DRY RUN
Bei Angabe dieses Parameters wird überprüft, ob
source_table
oder Tabellen insource_schema
aktualisiert werden können, ohne die Zieltabellen tatsächlich zu erstellen oder zu aktualisieren. Der Befehl gibtDRY_RUN_SUCCESS
zurück, wenn eine Tabelle aktualisiert werden kann.AS EXTERNAL
In Databricks Runtime 13.2 und höher kann mit dieser optionalen Klausel angegeben werden, dass ein Upgrade der verwalteten Tabellen im Hive-Metastore auf externe Tabellen in Unity Catalog durchgeführt wird. Bei Verwendung mitSYNC SCHEMA
gilt sie für alle Tabellen, einschließlich verwalteter Tabellen insource_schema.
Gibt zurück
Ein Bericht mit den folgenden Spalten:
source_schema STRING
Der Name des Quellschemas. Das Schema lautet
NULL
, wenn die Quelle eine nicht unterstützte temporäre Sicht ist.source_name STRING NOT NULL
Der Name der Quelltabelle.
source_type STRING NOT NULL
Der Typ der Tabelle:
MANAGED
oderEXTERNAL
target_catalog STRING NOT NULL
Der Zielkatalog in Unity Catalog, in dem die Tabelle synchronisiert wird.
target_schema STRING NOT NULL
Das Zielschema in Unity Catalog, in dem die Tabelle synchronisiert wird.
target_name STRING NOT NULL
Der Name der Tabelle in Unity Catalog, mit der die Quelltabelle synchronisiert wird. Dieser Name entspricht dem Namen der Quelltabelle.
status_code STRING NOT NULL
Ein Statuscode für das Ergebnis des
SYNC
-Befehls für die Quelltabelle.description STRING
Eine beschreibende Meldung zum Status des Synchronisierungsbefehls für die Quelltabelle.
Gängige Statuscodes, die von SYNC
zurückgegeben werden
Der SYNC
-Befehl gibt ein eindeutiges status_code
-Feld in der Ausgabe für jede Tabelle an, die auf Unity Catalog aktualisiert werden soll. Das Feld gibt den Status des Upgrades an.
Nachfolgend finden Sie einige gängige Statuscodes sowie Empfehlungen zu deren Behebung:
DRY_RUN_SUCCESS
: Erfolgreicher Probelauf.Die Tabelle kann mithilfe des Befehls
SYNC
auf Unity Catalog aktualisiert werden.DBFS_ROOT_LOCATION
: Tabelle im Databricks-Dateisystemstamm.Die Tabelle befindet sich im Stammverzeichnis des Databricks-Dateisystems. Dies wird in Unity Catalog nicht unterstützt. Kopieren Sie die Tabellendaten mithilfe eines CREATE TABLE-Befehls mit der Option
DEEP CLONE
an den Unity Catalog-Speicherort.EXTERNAL_TABLE_IN_MANAGED_LOCATION
: Der externe Tabellenpfad kann nicht im verwalteten Speicher gespeichert werden.Der für die externe Tabelle angegebene Pfad befindet sich innerhalb des verwalteten Unity Catalog-Speichers. Wenn sich die Tabelle im verwalteten Speicher befinden muss, aktualisieren Sie die Tabelle mithilfe eines CREATE TABLE-Befehls mit der Option
DEEP CLONE
als verwaltete Tabelle, oder verschieben Sie den Tabellenspeicherort aus dem verwalteten Unity Catalog-Speicher.HIVE_SERDE
: Die Tabelle ist nicht zum Upgrade von Hive-Metastore auf Unity Catalog berechtigt. Grund: Hive SerDe-TabelleHive SerDe-Tabellen werden von Unity Catalog nicht unterstützt. Ändern Sie die Tabellen in das Delta-Format, und führen Sie zum Upgrade den Befehl
SYNC
aus.INVALID_DATASOURCE_FORMAT
: Das Datenquellenformat wurde nicht angegeben oder wird nicht unterstützt.Verwenden Sie eines der unterstützten Datenquellenformate: Delta, Parquet, CSV, JSON, ORC, TEXT
LOCATION_OVERLAP
: Der Eingabepfad überschneidet sich mit anderen externen Tabellen.Der Tabellenspeicherort überschneidet sich mit anderen externen Tabellen. Verwenden Sie einen anderen Speicherort für die Tabelle, oder entfernen Sie die sich überlappenden externen Tabellen.
MULTIPLE_EXT_LOCATIONS
: Der Eingabepfad enthält weitere externe Speicherorte.Es gibt mehrere externe Speicherorte, die Unterverzeichnisse des angegebenen Tabellenpfads sind. Überprüfen Sie, ob die externen Speicherorte innerhalb des Tabellenspeicherorts erforderlich sind.
MULTIPLE_TARGET_TABLE
: Es ist bereits eine andere synchronisierte Tabelle vorhanden. Pro Quelltabelle ist nur eine Zieltabelle zulässig.Die Quelltabelle wurde bereits mit einer anderen Zieltabelle synchronisiert, was nicht zulässig ist. Um
SYNC
für eine andere Tabelle zu erzwingen, entfernen Sie die Tabelleneigenschaftupgraded_to
aus der Quelltabelle, oder entfernen Sie die zuvor synchronisierte Tabelle aus Unity Catalog, wenn sie nicht mehr benötigt wird.NOT_EXTERNAL
: Die Tabelle ist nicht zum Upgrade von Hive-Metastore auf Unity Catalog berechtigt. Grund: Keine externe TabelleDer Befehl
SYNC
unterstützt nur die Migration externer Tabellen zu Unity Catalog. Erstellen Sie für verwaltete Tabellen mithilfe eines CREATE TABLE-Befehls mit der OptionDEEP CLONE
eine verwaltete Tabelle in Unity Catalog. Alternativ können Sie dieAS EXTERNAL
-Klausel mit demSYNC
-Befehl verwenden, um eine externe Tabelle in Unity Catalog zu erstellen.READ_ONLY_CATALOG
: Daten in einem Delta Sharing-Katalog sind schreibgeschützt und können nicht geändert oder gelöscht werden.Der ausgewählte Katalog ist ein Delta Sharing-Katalog, der schreibgeschützt ist. Tabellen in einem schreibgeschützten Katalog können nicht mithilfe des
SYNC
-Befehls aktualisiert werden.SUCCESS
: Tabelle wurde erfolgreich synchronisiert.TABLE_ALREADY_EXISTS
: Zieltabelle ist bereits vorhanden.Eine Tabelle mit demselben Namen wie die ausgewählte Tabelle ist in Unity Catalog bereits vorhanden. Benennen Sie die vorhandene Tabelle in Unity Catalog um, oder entfernen Sie sie, und führen Sie den Befehl
SYNC
erneut aus.TEMP_TABLE_NOT_SUPPORTED
: Globale temporäre Tabellen oder Sichten werden nicht unterstützt.Temporäre Tabellen oder Sichten können nicht auf Unity Catalog aktualisiert werden. Wenn Sie temporäre Tabellen oder Sichten verwenden möchten, erstellen Sie sie in Unity Catalog mit dem Befehl SHOW CREATE TABLE in Unity Catalog neu.
TIMEOUT
: Timeout für Synchronisierungsaufgabe.Die Ausführung des Synchronisierungsbefehls dauerte mehr als 300 Sekunden. Legen Sie für
spark.databricks.sync.command.task.timeout
einen höheren Wert (in Sekunden) fest. Der Standardwert ist 300. Wenden Sie sich an den Support, wenn der Fehler weiterhin auftritt.VIEWS_NOT_SUPPORTED
: Sichten werden nicht unterstützt.Erstellen Sie die Sichten manuell mithilfe des Befehls SHOW CREATE TABLE in Unity Catalog neu.
Beispiele
-- Sync an existing hive metastore table hive_metastore.default.my_tbl to a Unity Catalog
-- table named main.default.my_tbl.
> SYNC TABLE main.default.my_tbl FROM hive_metastore.default.my_tbl;
source_schema source_name source_type target_catalog target_schema target_name status_code description
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
default my_tbl external main default my_tbl SUCCESS Table main.default.my_tbl synced.
-- Sync an existing managed hive metastore table hive_metastore.default.my_tbl to an external table named main.default.my_tbl in Unity Catalog.
> SYNC TABLE main.default.my_tbl AS EXTERNAL FROM hive_metastore.default.my_tbl;
source_schema source_name source_type target_catalog target_schema target_name status_code description
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
default my_tbl managed main default my_tbl SUCCESS Table main.default.my_tbl synced.
-- SYNC a table in DRY RUN mode to evaluate the upgradability of the hive metastore table.
> SYNC TABLE main.default.my_tbl FROM hive_metastore.default.my_tbl DRY RUN;
source_schema source_name source_type target_catalog target_schema target_name status_code description
------------- ----------- ----------- -------------- ------------- ----------- --------------- ---------------------------------
default my_tbl external main default my_tbl DRY_RUN_SUCCESS
-- SYNC all the eligible tables in schema hive_metastore.mydb to a Unity Catalog schema main.my_db_uc.
-- The upgraded tables in main.my_db_uc will be owned by alf@melmak.et
> SYNC SCHEMA main.my_db_uc FROM hive_metastore.my_db SET OWNER `alf@melmak.et`;
source_schema source_name source_type target_catalog target_schema target_name status_code description
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
...
-- DRY RUN mode of SYNC SCHEMA to evaluate all the tables in a schema
-- hive_metastore.mydb for upgrading to Unity Catalog.
> SYNC SCHEMA main.my_db_uc FROM hive_metastore.my_db DRY RUN;
source_schema source_name source_type target_catalog target_schema target_name status_code description
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
...
-- Sync all tables including managed tables in a schema hive_metastore.mydb
-- as external tables in Unity Catalog.
> SYNC SCHEMA main.my_db_uc AS EXTERNAL FROM hive_metastore.my_db;
source_schema source_name source_type target_catalog target_schema target_name status_code description
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
...