SYNC
Van toepassing op: Databricks SQL
Databricks Runtime
alleen Unity Catalog
Gebruik de opdracht SYNC
om externe tabellen in Hive Metastore te upgraden naar externe tabellen in Unity Catalog. U kunt ook SYNC
gebruiken om beheerde Hive-tabellen te 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
gebruiken om nieuwe tabellen in Unity Catalog te maken op basis van bestaande Hive Metastore-tabellen en de Unity Catalog-tabellen bij te werken wanneer de brontabellen in Hive Metastore worden gewijzigd.
De opdracht SYNC
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 naar 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 op true
, voegt SYNC
geen nieuwe tabeleigenschappen toe en detecteert deze mogelijk niet als 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 SYNC opdracht is gewijzigd, moet de gebruiker de naam van de doeltabel handmatig wijzigen voordat de SYNC opdracht opnieuw wordt uitgevoerd wanneer de configuratie is true
.
Belangrijk
Wanneer een SYNC
-opdracht wordt uitgevoerd, voegt de SET TBLPROPERTIES
-bewerking een tabeleigenschap toe die verwijst naar de externe tabelreferentie van de Unity Catalogus. Met deze bewerking wordt een nieuwe Delta-momentopname berekend en een nieuwe vermelding toegevoegd aan het Delta-logboek van de tabel, waarbij geschreven wordt naar het doeltabelpad in de cloudopslag.
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, die 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 met
source_table
en moet de gebruiker ook eigenaar zijn van de tabel. Als de tabel niet bestaat, wordt deze gemaakt. -
Een bestaande tabel in
hive_metastore
waarvan de gebruiker eigenaar is.
-
-
Stel desgewenst de eigenaar van de bijgewerkte tabellen in Unity Catalog in op
principal
. De standaardeigenaar is de huidige gebruiker. AS EXTERNAL
SYNC
een beheerde Hive-tabel of -schema dat is opgeslagen buiten de Databricks-werkruimteopslag (ook wel DBFS-hoofdmap genoemd) naar externe tabellen in Unity Catalog. U kuntAS EXTERNAL
niet gebruiken om beheerde Hive-tabellen te upgraden die zijn opgeslagen in werkruimteopslag.DRY RUN
Wanneer opgegeven, controleert het of de
source_table
of de tabellen insource_schema
kunnen worden bijgewerkt zonder dat de doeltabellen daadwerkelijk worden aangemaakt of bijgewerkt. De opdracht retourneertDRY_RUN_SUCCESS
als een tabel kan worden bijgewerkt.AS EXTERNAL
Databricks Runtime 13.2 en hoger starten, 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 wordt
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 opdracht
SYNC
voor de brontabel.description STRING
Een beschrijvend bericht over de status van de synchronisatieopdracht voor de brontabel.
Algemene statuscodes geretourneerd door SYNC
De opdracht SYNC
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 opdracht
SYNC
.DBFS_ROOT_LOCATION
: Tabel in de hoofddirectory 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 Catalog-locatie met behulp van een CREATE TABLE opdracht met de optie
DEEP CLONE
.EXTERNAL_TABLE_IN_MANAGED_LOCATION
: Extern tabelpad kan niet onder beheerde opslag vallen.Het pad dat is opgegeven voor de externe tabel, bevindt zich in de beheerde 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 CREATE TABLE opdracht met de optie
DEEP CLONE
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
SYNC
opdracht uit om een 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 was al eerder gesynchroniseerd met een andere doeltabel, wat 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 CREATE TABLE opdracht met de optieDEEP CLONE
. U kunt ook deAS EXTERNAL
-component gebruiken met de opdrachtSYNC
om een externe tabel te maken in Unity Catalog.READ_ONLY_CATALOG
: Gegevens in een Delta-sharingcatalogus zijn alleen-lezen en kunnen niet worden gewijzigd of verwijderd.De gekozen catalogus is een delta-sharingcatalogus die alleen-lezen is. Tabellen in een alleen-lezencatalogus kunnen niet worden bijgewerkt met behulp van de opdracht
SYNC
.SUCCESS
: Tabel is succesvol 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 opdracht
SYNC
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
: De synchronisatietaak is verlopen.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 behulp van SHOW CREATE TABLE opdracht 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
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
...