Delen via


SYNC

Van toepassing op:aangevinkt ja Databricks SQL aangevinkt ja Databricks Runtime aangevinkt ja 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.

    • target_schema

      Een bestaand schema in Unity Catalog waarin de gebruiker is gemachtigd om tabellen te maken.

    • source_schema

      Een bestaand schema in de hive_metastore-catalogus, die eigendom is van de gebruiker.

  • TABLE

    SYNC een afzonderlijke tabel.

    • target_table

      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_tableen moet de gebruiker ook eigenaar zijn van de tabel. Als de tabel niet bestaat, wordt deze gemaakt.

    • source_table

      Een bestaande tabel in hive_metastore waarvan de gebruiker eigenaar is.

  • principal

    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 kunt AS 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 in source_schema kunnen worden bijgewerkt zonder dat de doeltabellen daadwerkelijk worden aangemaakt of bijgewerkt. De opdracht retourneert DRY_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 met SYNC SCHEMAgeldt dit voor alle tabellen, inclusief beheerde tabellen in de source_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 of EXTERNAL

  • 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 tabeleigenschap upgraded_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 optie DEEP CLONE. U kunt ook de AS EXTERNAL-component gebruiken met de opdracht SYNC 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
  ------------- ----------- ----------- -------------- ------------- ----------- -----------     ---------------------------------
  ...