SYNC

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime centang ditandai ya Unity Catalog saja

Perintah SYNC digunakan untuk meningkatkan tabel eksternal di Apache Hive Metastore ke tabel eksternal di Katalog Unity. Anda dapat menggunakannya untuk membuat tabel baru di Unity Catalog dari tabel Apache Hive Metastore yang ada serta memperbarui tabel Unity Catalog saat tabel sumber di Apache Hive Metastore diubah.

Perintah SYNC dapat dijalankan pada tingkat skema menggunakan SYNC SCHEMA sintaks atau untuk tabel individual menggunakan SYNC TABLE sintaks.

Perintah melakukan operasi tulis (ALTER TABLE) ke setiap tabel sumber yang ditingkatkannya untuk menambahkan beberapa properti tabel tambahan untuk pembukaan bukunya. Dalam kasus tabel Delta, untuk melakukan operasi tulis kluster atau Gudang SQL yang menjalankan perintah harus memiliki akses tulis ke lokasi tabel.

Di Databricks Runtime 12.2 LTS atau lebih tinggi, perilaku ini dapat dinonaktifkan dengan mengatur konfigurasi spark.databricks.sync.command.disableSourceTableWrites Spark ke true sebelum menjalankan SYNC perintah. Ketika diatur ke true, SYNC tidak menambahkan properti tabel baru dan oleh karena itu mungkin tidak mendeteksi apakah tabel sebelumnya telah dimutakhirkan ke Katalog Unity. Dalam hal ini, secara eksklusif bergantung pada nama tabel untuk menentukan apakah tabel sebelumnya telah ditingkatkan ke Katalog Unity. Jika tabel sumber telah diganti namanya sejak perintah SYNC terakhir, pengguna perlu mengganti nama tabel tujuan secara manual sebelum menjalankan kembali perintah SYNC saat konfigurasi adalah true.

Penting

SYNC Saat perintah dijalankan, SET TBLPROPERTIES operasi menambahkan properti tabel yang menunjukkan referensi tabel eksternal Katalog Unity target. Operasi ini menghitung rekam jepret Delta baru dan menambahkan entri baru ke log Delta tabel, menulis ke jalur tabel target di penyimpanan cloud.

Sintaks

SYNC { SCHEMA target_schema FROM source_schema |
       TABLE target_table FROM source_table }
  [SET OWNER principal]
  [DRY RUN]

Parameter

  • SCHEMA

    SYNC semua tabel dalam skema.

    • target_schema

      Skema yang ada di Unity Catalog tempat pengguna berwenang untuk membuat tabel.

    • source_schema

      Skema yang ada dalam hive_metastore katalog, yang dimiliki oleh pengguna.

  • TABLE

    SYNC tabel individual.

    • target_table

      Tabel baru atau yang sudah ada di Katalog Unity dalam skema di mana pengguna berwenang untuk membuat tabel. Jika tabel sudah ada, tabel diganti agar sesuai source_table, dan pengguna juga harus memiliki tabel. Jika tabel tidak ada, tabel akan dibuat.

    • source_table

      Tabel yang sudah ada tempat hive_metastore pengguna memiliki.

  • principal

    Secara opsional atur pemilik tabel yang ditingkatkan di Katalog Unity ke principal. Pemilik default adalah pengguna saat ini.

  • DRY RUN

    Ketika ditentukan memeriksa apakah source_table tabel atau di dalamnya source_schema dapat ditingkatkan tanpa benar-benar membuat atau meningkatkan tabel target. Perintah mengembalikan DRY_RUN_SUCCESS jika tabel dapat ditingkatkan.

Mengembalikan

Laporan dengan kolom berikut:

  • source_schema STRING

    Nama skema sumber. Skemanya adalah NULL jika sumber adalah tampilan sementara yang tidak didukung.

  • source_name STRING NOT NULL

    Nama tabel sumber.

  • source_type STRING NOT NULL

    Jenis tabel: MANAGED atau EXTERNAL

  • target_catalog STRING NOT NULL

    Katalog target di Katalog Unity tempat tabel disinkronkan.

  • target_schema STRING NOT NULL

    Skema target di Katalog Unity tempat tabel disinkronkan.

  • target_name STRING NOT NULL

    Nama tabel dalam Katalog Unity tempat tabel sumber disinkronkan. Nama ini cocok dengan nama tabel sumber.

  • status_code STRING NOT NULL

    Kode status untuk hasil SYNC perintah untuk tabel sumber.

  • description STRING

    Pesan deskriptif tentang status perintah sinkronisasi untuk tabel sumber.

Kode status umum yang dikembalikan oleh SYNC

Perintah SYNC menyediakan bidang unik status_code dalam output untuk setiap tabel yang akan ditingkatkan ke Katalog Unity yang mewakili status peningkatan. Beberapa kode status umum bersama dengan rekomendasi untuk mengatasinya adalah:

  • DRY_RUN_SUCCESS: Eksekusi kering berhasil.

    Tabel dapat dimutakhirkan ke Katalog Unity menggunakan SYNC perintah .

  • DBFS_ROOT_LOCATION: Tabel yang terletak di akar Sistem File Databricks.

    Tabel terletak di lokasi akar Databricks Filesystem. Ini tidak didukung di Katalog Unity. Salin data tabel ke lokasi Katalog Unity menggunakan perintah CREATE TABLE dengan DEEP CLONE opsi .

  • EXTERNAL_TABLE_IN_MANAGED_LOCATION: Jalur tabel eksternal tidak dapat berada di bawah penyimpanan terkelola.

    Jalur yang diberikan untuk tabel eksternal berada dalam Unity Catalog mengelola penyimpanan. Jika tabel harus berada di bawah penyimpanan terkelola, tingkatkan tabel sebagai tabel terkelola menggunakan perintah CREATE TABLE dengan DEEP CLONE opsi atau pindahkan lokasi tabel dari penyimpanan terkelola Katalog Unity.

  • HIVE_SERDE: Tabel tidak memenuhi syarat untuk peningkatan dari Apache Hive Metastore ke Katalog Unity. Alasan: Tabel Apache Hive SerDe.

    Tabel Apache Hive SerDe tidak didukung oleh Katalog Unity. Ubah tabel menjadi format Delta dan terbitkan SYNC perintah untuk meningkatkan.

  • INVALID_DATASOURCE_FORMAT: Format sumber data tidak ditentukan atau tidak didukung.

    Gunakan salah satu format sumber data yang didukung: Delta, Parquet, CSV, JSON, ORC, TEXT

  • LOCATION_OVERLAP: Jalur input tumpang tindih dengan tabel eksternal lainnya.

    Lokasi tabel tumpang tindih dengan tabel eksternal lainnya. Gunakan lokasi lain untuk tabel atau hapus tabel eksternal yang tumpang tindih.

  • MULTIPLE_EXT_LOCATIONS: Jalur input berisi lokasi eksternal lainnya.

    Ada lebih dari satu lokasi eksternal yang merupakan subdirektori dari jalur tabel yang disediakan. Periksa apakah lokasi eksternal dalam lokasi tabel diperlukan.

  • MULTIPLE_TARGET_TABLE: Tabel yang disinkronkan berbeda sudah ada. Hanya satu tabel target per tabel sumber yang diizinkan.

    Tabel sumber sudah disinkronkan ke tabel target lain yang sebelumnya tidak diizinkan. Untuk memaksa SYNC ke tabel lain, hapus properti upgraded_to tabel dari tabel sumber atau hapus tabel yang sebelumnya disinkronkan dari Katalog Unity jika tidak diperlukan lagi.

  • NOT_EXTERNAL: Tabel tidak memenuhi syarat untuk peningkatan dari Metastore Apache Hive ke Katalog Unity. Alasan: Bukan tabel eksternal.

    SYNC perintah hanya mendukung migrasi tabel eksternal ke Unity Catalog. Untuk tabel terkelola, buat tabel terkelola di Unity Catalog menggunakan perintah CREATE TABLE dengan DEEP CLONE opsi .

  • READ_ONLY_CATALOG: Data di dalam katalog berbagi Delta bersifat baca-saja dan tidak dapat dimodifikasi atau dihapus.

    Katalog yang dipilih adalah katalog berbagi delta yang bersifat baca-saja. Tabel dalam katalog baca-saja tidak dapat diperbarui menggunakan SYNC perintah .

  • SUCCESS: Tabel berhasil disinkronkan.

  • TABLE_ALREADY_EXISTS: Tabel target sudah ada.

    Tabel dengan nama yang sama dengan tabel yang dipilih sudah ada di Katalog Unity. Ganti nama atau hapus tabel yang ada di Katalog Unity dan jalankan SYNC ulang perintah .

  • TEMP_TABLE_NOT_SUPPORTED: Tabel atau tampilan sementara tidak didukung.

    Tabel atau tampilan sementara tidak dapat dimutakhirkan ke Katalog Unity. Untuk menggunakan tabel atau tampilan sementara, buat ulang di Katalog Unity menggunakan perintah TAMPILKAN BUAT TABEL di Katalog Unity.

  • TIMEOUT: Waktu tugas sinkronisasi habis.

    Tugas perintah sinkronisasi membutuhkan waktu lebih dari 300 detik untuk diselesaikan. Tingkatkan spark.databricks.sync.command.task.timeout ke nilai yang lebih tinggi dalam detik. Nilai defaultnya adalah 300. Jika kesalahan berlanjut, hubungi dukungan.

  • VIEWS_NOT_SUPPORTED: Tampilan tidak didukung.

    Buat ulang tampilan secara manual menggunakan perintah SHOW CREATE TABLE di Katalog Unity.

Contoh

- 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 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
  ------------- ----------- ----------- -------------- ------------- ----------- -----------     ---------------------------------
  ...