Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks SQL
Databricks Runtime
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
SCHEMASYNCsemua tabel dalam skema.-
Skema yang ada di Unity Catalog tempat pengguna berwenang untuk membuat tabel.
-
Skema yang ada dalam
hive_metastorekatalog, yang dimiliki oleh pengguna.
-
TABLESYNCtabel 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 dan dimiliki oleh pengguna di
hive_metastore
-
-
Secara opsional atur pemilik tabel yang ditingkatkan di Katalog Unity ke
principal. Pemilik default adalah pengguna saat ini. AS EXTERNALSYNCsebuah 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 menggunakanAS EXTERNALuntuk meningkatkan tabel yang dikelola Hive yang disimpan dalam penyimpanan ruang kerja.DRY RUNKetika ditentukan, periksa apakah
source_tableatau tabel dalamsource_schemadapat ditingkatkan tanpa benar-benar membuat atau meningkatkan tabel target. Perintah ini mengembalikanDRY_RUN_SUCCESSjika tabel dapat di-upgrade.AS EXTERNALMulai 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 denganSYNC SCHEMA, ini berlaku untuk semua tabel, termasuk tabel terkelola disource_schema.
Pengembalian
Laporan dengan kolom berikut:
source_schema STRINGNama skema sumber. Skemanya adalah
NULLjika sumber adalah tampilan sementara yang tidak didukung.source_name STRING NOT NULLNama tabel sumber.
source_type STRING NOT NULLJenis tabel:
MANAGEDatauEXTERNALtarget_catalog STRING NOT NULLKatalog target di Unity Catalog tempat tabel disinkronkan.
target_schema STRING NOT NULLSkema target di Katalog Unity di mana tabel disinkronkan.
target_name STRING NOT NULLNama tabel dalam Katalog Unity tempat tabel sumber disinkronkan. Nama ini cocok dengan nama tabel sumber.
status_code STRING NOT NULLKode status untuk hasil
SYNCperintah untuk tabel sumber.description STRINGPesan 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
SYNCperintah .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 CLONEatau 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
SYNCperintah 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
SYNCke tabel lain, hapus propertiupgraded_totabel 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.SYNCperintah hanya mendukung migrasi tabel eksternal ke Unity Catalog. Untuk tabel terkelola, buat tabel terkelola di Unity Catalog menggunakan perintah CREATE TABLE dengan opsiDEEP CLONE. Atau, gunakanAS EXTERNALklausa denganSYNCperintah 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
SYNCperintah .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
SYNCulang 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.timeoutke nilai yang lebih tinggi dalam detik.Atau, tugas skema sinkronisasi dapat kehabisan waktu, dalam hal ini Anda akan melihat
TimeoutException. Tingkatkanspark.databricks.sync.command.task.create.timeoutke 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
SYNCperintah , 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 menggunakanDESCRIBE TABLE EXTENDEDmengembalikan nilai yang benar.Masalah ini terjadi karena metastore Apache Hive mungkin menyimpan komentar menggunakan
latin1karakter yang ditetapkan secara default, yang tidak mendukung karakter non-ASCII. Saat Katalog Unity mengambil komentar menggunakanSYNC, 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;