SYNC
Berlaku untuk: Databricks SQL Databricks Runtime 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.-
Skema yang ada di Unity Catalog tempat pengguna berwenang untuk membuat tabel.
-
Skema yang ada dalam
hive_metastore
katalog, yang dimiliki oleh pengguna.
-
TABLE
SYNC
tabel individual.-
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 yang sudah ada tempat
hive_metastore
pengguna memiliki.
-
-
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 dalamnyasource_schema
dapat ditingkatkan tanpa benar-benar membuat atau meningkatkan tabel target. Perintah mengembalikanDRY_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
atauEXTERNAL
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 propertiupgraded_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 denganDEEP 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
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
...