SYNC
Alleen van toepassing op: Databricks SQL Databricks Runtime Unity Catalog
Gebruik de SYNC
opdracht om externe tabellen in Hive Metastore te upgraden naar externe tabellen in Unity Catalog. U kunt ook SYNC
beheerde Hive-tabellen upgraden die zijn opgeslagen buiten de Databricks-werkruimteopslag (ook wel DBFS-hoofdmap genoemd) naar externe tabellen in Unity Catalog. U kunt deze niet gebruiken om beheerde Hive-tabellen te upgraden die zijn opgeslagen in werkruimteopslag. Als u deze tabellen wilt upgraden, gebruikt u CREATE TABLE CLONE.
U kunt SYNC
nieuwe tabellen maken in Unity Catalog op basis van bestaande Hive Metastore-tabellen en de Unity Catalog-tabellen bijwerken wanneer de brontabellen in Hive Metastore worden gewijzigd.
De SYNC
opdracht kan worden uitgevoerd op schemaniveau met behulp van de SYNC SCHEMA
syntaxis of voor een afzonderlijke tabel met behulp van de SYNC TABLE
syntaxis.
Met de opdracht wordt een schrijfbewerking (ALTER TABLE
) uitgevoerd voor elke brontabel die wordt bijgewerkt om extra tabeleigenschappen toe te voegen voor de boekhouding.
In het geval van Delta-tabellen moet voor het uitvoeren van de schrijfbewerking het cluster of SQL Warehouse waarop de opdracht wordt uitgevoerd schrijftoegang hebben tot de tabellocatie.
In Databricks Runtime 12.2 LTS of hoger kan dit gedrag worden uitgeschakeld door de Spark-configuratie in spark.databricks.sync.command.disableSourceTableWrites
te true
stellen op voordat u de SYNC
opdracht uitvoert. Als deze optie is ingesteld true
, SYNC
worden er geen nieuwe tabeleigenschappen toegevoegd en wordt mogelijk niet gedetecteerd of de tabel eerder is bijgewerkt naar Unity Catalog.
In dat geval is het uitsluitend afhankelijk van de tabelnaam om te bepalen of de tabel eerder is bijgewerkt naar Unity Catalog.
Als de naam van de brontabel sinds de laatste SYNCHRONISATIE-opdracht is gewijzigd, moet de gebruiker de naam van de doeltabel handmatig wijzigen voordat de opdracht SYNC opnieuw wordt uitgevoerd wanneer de configuratie is true
ingesteld.
Belangrijk
Wanneer een SYNC
opdracht wordt uitgevoerd, wordt met de SET TBLPROPERTIES
bewerking een tabeleigenschap toegevoegd die de externe tabelreferentie van de doel-Unity Catalog aangeeft. Met deze bewerking wordt een nieuwe Delta-momentopname berekend en wordt een nieuwe vermelding toegevoegd aan het Delta-logboek van de tabel, die naar het doeltabelpad in de cloudopslag wordt geschreven.
Syntaxis
SYNC { SCHEMA target_schema [AS EXTERNAL] FROM source_schema |
TABLE target_table [AS EXTERNAL] FROM source_table }
[SET OWNER principal]
[DRY RUN]
Parameters
SCHEMA
SYNC
alle tabellen in een schema.-
Een bestaand schema in Unity Catalog waarin de gebruiker is gemachtigd om tabellen te maken.
-
Een bestaand schema in de
hive_metastore
catalogus, dat eigendom is van de gebruiker.
-
TABLE
SYNC
een afzonderlijke tabel.-
Een nieuwe of bestaande tabel in Unity Catalog in een schema waarin de gebruiker is gemachtigd om tabellen te maken. Als de tabel al bestaat, wordt deze vervangen om overeen te komen
source_table
en moet de gebruiker ook eigenaar zijn van de tabel. Als de tabel niet bestaat, wordt deze gemaakt. -
Een bestaande tabel
hive_metastore
waarin de gebruiker eigenaar is.
-
-
U kunt desgewenst de eigenaar van de bijgewerkte tabellen in Unity Catalog instellen op
principal
. De standaardeigenaar is de huidige gebruiker. AS EXTERNAL
SYNC
een door Hive beheerde tabel of schema die buiten de Databricks-werkruimteopslag (ook wel DBFS-hoofdmap genoemd) wordt opgeslagen in externe tabellen in Unity Catalog. U kunt niet gebruikenAS EXTERNAL
om beheerde Hive-tabellen bij te werken die zijn opgeslagen in werkruimteopslag.DRY RUN
Wanneer opgegeven controleert of de
source_table
of tabellen binnensource_schema
kunnen worden geüpgraded zonder de doeltabellen daadwerkelijk te maken of bij te voeren. De opdracht retourneertDRY_RUN_SUCCESS
als een tabel kan worden bijgewerkt.AS EXTERNAL
Vanaf Databricks Runtime 13.2 en hoger kan deze optionele component worden toegevoegd om op te geven dat beheerde tabellen in hive-metastore worden bijgewerkt als externe tabellen in Unity Catalog. Bij gebruik metSYNC SCHEMA
, geldt dit voor alle tabellen, inclusief beheerde tabellen in desource_schema.
Retouren
Een rapport met de volgende kolommen:
source_schema STRING
De naam van het bronschema. Het schema is
NULL
als de bron een niet-ondersteunde tijdelijke weergave is.source_name STRING NOT NULL
De naam van de brontabel.
source_type STRING NOT NULL
Het type tabel:
MANAGED
ofEXTERNAL
target_catalog STRING NOT NULL
De doelcatalogus in Unity Catalog waar de tabel wordt gesynchroniseerd.
target_schema STRING NOT NULL
Het doelschema in Unity Catalog waar de tabel wordt gesynchroniseerd.
target_name STRING NOT NULL
De naam van de tabel in Unity Catalog waarmee de brontabel wordt gesynchroniseerd. Deze naam komt overeen met de naam van de brontabel.
status_code STRING NOT NULL
Een statuscode voor het resultaat van de
SYNC
opdracht voor de brontabel.description STRING
Een beschrijvend bericht over de status van de synchronisatieopdracht voor de brontabel.
Algemene statuscodes geretourneerd door SYNC
De SYNC
opdracht biedt een uniek status_code
veld in de uitvoer voor elke tabel die moet worden bijgewerkt naar de Unity-catalogus die de status van de upgrade vertegenwoordigt.
Enkele algemene statuscodes, samen met de aanbevelingen om deze te verhelpen, zijn:
DRY_RUN_SUCCESS
: Droogloop succesvol.De tabel kan worden geüpgraded naar Unity Catalog met behulp van de
SYNC
opdracht.DBFS_ROOT_LOCATION
: Tabel in de hoofdmap van het Databricks-bestandssysteem.De tabel bevindt zich in de hoofdlocatie van het Databricks-bestandssysteem. Dit wordt niet ondersteund in Unity Catalog. Kopieer de tabelgegevens naar de unity-cataloguslocatie met behulp van een opdracht CREATE TABLE met de
DEEP CLONE
optie.EXTERNAL_TABLE_IN_MANAGED_LOCATION
: Het externe tabelpad kan niet onder beheerde opslag worden geplaatst.Het pad dat is opgegeven voor de externe tabel, bevindt zich in de opslag van Unity Catalog. Als de tabel zich onder de beheerde opslag moet bevinden, moet u de tabel upgraden als een beheerde tabel met behulp van een opdracht CREATE TABLE met de
DEEP CLONE
optie of de tabellocatie uit beheerde opslag van Unity Catalog verplaatsen.HIVE_SERDE
: De tabel komt niet in aanmerking voor een upgrade van Hive Metastore naar Unity Catalog. Reden: Hive SerDe Table.Hive SerDe-tabellen worden niet ondersteund door Unity Catalog. Wijzig de tabellen in delta-indeling en geef de opdracht uit om een
SYNC
upgrade uit te voeren.INVALID_DATASOURCE_FORMAT
: De gegevensbronindeling is niet opgegeven of wordt niet ondersteund.Gebruik een van de ondersteunde gegevensbronindelingen: Delta, Parquet, CSV, JSON, ORC, TEXT
LOCATION_OVERLAP
: invoerpad overlapt met andere externe tabellen.De tabellocatie overlapt met andere externe tabellen. Gebruik een andere locatie voor de tabel of verwijder de overlappende externe tabellen.
MULTIPLE_EXT_LOCATIONS
: invoerpad bevat andere externe locaties.Er zijn meer dan één externe locaties die submappen van het opgegeven tabelpad zijn. Controleer of de externe locaties binnen de tabellocatie nodig zijn.
MULTIPLE_TARGET_TABLE
: Er bestaat al een andere gesynchroniseerde tabel. Er is slechts één doeltabel per brontabel toegestaan.De brontabel is al gesynchroniseerd met een andere doeltabel die eerder niet is toegestaan. Als u de
SYNC
naar een andere tabel wilt afdwingen, verwijdert u de tabeleigenschapupgraded_to
uit de brontabel of verwijdert u de eerder gesynchroniseerde tabel uit Unity Catalog als deze niet meer nodig is.NOT_EXTERNAL
: Tabel komt niet in aanmerking voor een upgrade van Hive Metastore naar Unity Catalog. Reden: Geen externe tabel.SYNC
opdracht biedt alleen ondersteuning voor het migreren van externe tabellen naar Unity Catalog. Maak voor beheerde tabellen een beheerde tabel in Unity Catalog met behulp van een opdracht CREATE TABLE met deDEEP CLONE
optie. U kunt ook deAS EXTERNAL
component gebruiken met deSYNC
opdracht om een externe tabel te maken in Unity Catalog.READ_ONLY_CATALOG
: Gegevens in een Delta-catalogus voor delen hebben het kenmerk Alleen-lezen en kunnen niet worden gewijzigd of verwijderd.De gekozen catalogus is een catalogus voor delen van verschillen die alleen-lezen is. Tabellen in een alleen-lezencatalogus kunnen niet worden bijgewerkt met behulp van de
SYNC
opdracht.SUCCESS
: Tabel is gesynchroniseerd.TABLE_ALREADY_EXISTS
: De doeltabel bestaat al.Er bestaat al een tabel met dezelfde naam als de gekozen tabel in Unity Catalog. Wijzig de naam of verwijder de bestaande tabel in Unity Catalog en voer de
SYNC
opdracht opnieuw uit.TEMP_TABLE_NOT_SUPPORTED
: Tijdelijke tabellen of weergaven worden niet ondersteund.Tijdelijke tabellen of weergaven kunnen niet worden bijgewerkt naar Unity Catalog. Als u tijdelijke tabellen of weergaven wilt gebruiken, maakt u deze opnieuw in Unity Catalog met behulp van de opdracht SHOW CREATE TABLE in Unity Catalog.
TIMEOUT
: Er is een time-out opgetreden voor synchronisatietaak.De synchronisatieopdrachttaak duurde meer dan 300 seconden. Verhoog
spark.databricks.sync.command.task.timeout
in seconden naar een hogere waarde. De standaardwaarde is 300. Als de fout zich blijft voordoen, neemt u contact op met de ondersteuning.VIEWS_NOT_SUPPORTED
: Weergaven worden niet ondersteund.Maak de weergaven handmatig opnieuw met de opdracht SHOW CREATE TABLE in Unity Catalog.
Voorbeelden
-- 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
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
...