Bagikan melalui


SYNC

Berlaku untuk:dicentang ya Databricks SQL dicentang ya Databricks Runtime dicentang ya Unity Catalog saja

SYNC Gunakan perintah untuk meningkatkan tabel eksternal di Apache Hive Metastore ke tabel eksternal di Unity Catalog. Anda juga dapat menggunakan SYNC untuk mengupgrade tabel Apache Hive yang dikelola yang disimpan di luar penyimpanan ruang kerja Databricks (terkadang disebut root DBFS) ke tabel eksternal di Unity Catalog. Anda tidak dapat menggunakannya untuk meningkatkan tabel terkelola Apache Hive yang disimpan di penyimpanan ruang kerja. Untuk meningkatkan tabel tersebut, gunakan CREATE TABLE CLONE.

Anda dapat menggunakan SYNC untuk membuat tabel baru di Unity Catalog dari tabel Apache Hive Metastore yang ada serta memperbarui tabel Katalog Unity saat tabel sumber di Hive Metastore dimodifikasi.

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) pada setiap tabel sumber yang di-upgrade untuk menambahkan beberapa properti tabel tambahan demi keperluan pembukuan. 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, bergantung sepenuhnya pada nama tabel untuk menentukan apakah tabel tersebut telah ditingkatkan sebelumnya 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 true.

Penting

Ketika perintah SYNC dijalankan, operasi SET TBLPROPERTIES 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 [AS EXTERNAL] FROM source_schema |
       TABLE target_table [AS EXTERNAL] FROM source_table }
  [SET OWNER principal]
  [DRY RUN]

Parameter-parameternya

  • SCHEMA

    SYNC semua tabel dalam skema.

    • sasaran_skema

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

    • skema_sumber

      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.

    • tabel_sumber

      Tabel yang sudah ada dan dimiliki oleh pengguna di hive_metastore

  • kepala sekolah

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

  • AS EXTERNAL

    SYNC sebuah tabel atau skema yang dikelola oleh Hive yang disimpan di luar penyimpanan ruang kerja Databricks (terkadang disebut akar DBFS) ke tabel eksternal di Unity Catalog. Anda tidak dapat menggunakan AS EXTERNAL untuk meningkatkan tabel yang dikelola Hive yang disimpan dalam penyimpanan ruang kerja.

  • DRY RUN

    Ketika ditentukan, periksa apakah source_table atau tabel dalam source_schema dapat ditingkatkan tanpa benar-benar membuat atau meningkatkan tabel target. Perintah ini mengembalikan DRY_RUN_SUCCESS jika tabel dapat di-upgrade.

  • AS EXTERNAL Mulai dari Databricks Runtime 13.2 dan yang lebih baru, klausul opsional ini dapat ditambahkan untuk menentukan bahwa tabel terkelola di metastore Apache Hive ditingkatkan menjadi tabel eksternal di Unity Catalog. Saat digunakan dengan SYNC SCHEMA, ini berlaku untuk semua tabel, termasuk tabel terkelola di source_schema.

Pengembalian

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 Unity Catalog tempat tabel disinkronkan.

  • target_schema STRING NOT NULL

    Skema target di Katalog Unity di mana 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: Uji coba 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 File System. Ini tidak didukung di Katalog Unity. Salin data tabel ke lokasi Katalog Unity menggunakan perintah CREATE TABLE dengan opsi DEEP CLONE.

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

    Jalur yang diberikan untuk tabel eksternal berada dalam penyimpanan yang dikelola oleh Unity Catalog. Jika tabel harus berada di bawah penyimpanan terkelola, tingkatkan tabel sebagai tabel terkelola menggunakan perintah CREATE TABLE dengan opsi DEEP CLONE 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 Hive SerDe.

    Tabel 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, AVRO

  • 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 Hive Metastore 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 opsi DEEP CLONE. Atau, gunakan AS EXTERNAL klausa dengan SYNC perintah untuk membuat tabel eksternal di Katalog Unity.

  • 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 SHOW CREATE TABLE di Katalog Unity.

  • TIMEOUT: Waktu tugas sinkronisasi habis.

    Tugas perintah tabel sinkronisasi membutuhkan waktu lebih dari 600 detik untuk diselesaikan. Tingkatkan spark.databricks.sync.command.task.timeout ke nilai yang lebih tinggi dalam detik.

    Atau, tugas skema sinkronisasi dapat kehabisan waktu, dalam hal ini Anda akan melihat TimeoutException. Tingkatkan spark.databricks.sync.command.task.create.timeout ke nilai yang lebih tinggi dalam detik.

    Nilai default untuk kedua bendera adalah 600. Jika masalah masih berlangsung, 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 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
  ------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
  ...

Penyelesaian Masalah

  • Karakter non-ASCII dalam komentar tabel tidak disinkronkan dengan benar

    Saat memutakhirkan tabel dari metastore Apache Hive ke Katalog Unity menggunakan SYNC perintah , komentar tabel yang menyertakan karakter non-ASCII (seperti teks Jepang atau Cina) mungkin tampak rusak. Misalnya, komentar yang terpengaruh mungkin ditampilkan sebagai serangkaian tanda tanya (???) atau gagal dirender di Catalog Explorer. Namun, mengkueri komentar menggunakan DESCRIBE TABLE EXTENDED mengembalikan nilai yang benar.

    Masalah ini terjadi karena metastore Apache Hive mungkin menyimpan komentar menggunakan latin1 karakter yang ditetapkan secara default, yang tidak mendukung karakter non-ASCII. Saat Katalog Unity mengambil komentar menggunakan SYNC, karakter yang tidak didukung mungkin hilang atau rusak.

    Untuk memulihkan atau memulihkan karakter non-ASCII dalam komentar setelah memutakhirkan dengan SYNC, jalankan perintah berikut pada tabel yang terpengaruh di Katalog Unity:

    MSCK REPAIR TABLE <catalog>.<schema>.<table_name> SYNC METADATA;