Delen via


SYNC

Alleen van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime vinkje als ja aan 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 trueingesteld.

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.

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

    • source_table

      Een bestaande tabel hive_metastore waarin de gebruiker eigenaar is.

  • principal

    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 gebruiken AS EXTERNAL om beheerde Hive-tabellen bij te werken die zijn opgeslagen in werkruimteopslag.

  • DRY RUN

    Wanneer opgegeven controleert of de source_table of tabellen binnen source_schema kunnen worden geüpgraded zonder de doeltabellen daadwerkelijk te maken of bij te voeren. De opdracht retourneert DRY_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 met SYNC SCHEMA, geldt 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 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 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 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 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 opdracht CREATE TABLE met de DEEP CLONE optie. U kunt ook de AS EXTERNAL component gebruiken met de SYNC 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
  ------------- ----------- ----------- -------------- ------------- ----------- -----------     ---------------------------------
  ...