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.
Penting
Fitur ini ada di Pratinjau Umum dan hanya tersedia untuk pelanggan yang berpartisipasi saat ini. Untuk berpartisipasi dalam pratinjau, daftarkan diri Anda dengan mengisi formulir ini. Fitur ini hanya mendukung konversi tabel asing yang difederasi menggunakan HMS dan Glue Federation.
Halaman ini menjelaskan cara menggunakan SET MANAGED untuk mengonversi tabel asing ke tabel terkelola.
- Untuk detail tentang mengonversi tabel eksternal ke tabel terkelola, lihat Mengonversi tabel eksternal ke tabel Katalog Unity terkelola
- Untuk detail tentang mengonversi tabel asing ke tabel eksternal, lihat Mengonversi tabel asing ke tabel Katalog Unity eksternal
gambaran umum SET MANAGED
SET MANAGED Gunakan fitur untuk mengonversi tabel asing ke tabel terkelola Unity Catalog di Azure Databricks.
SET MANAGED menawarkan manfaat berikut:
- Mempertahankan riwayat tabel.
- Mempertahankan konfigurasi tabel yang sama, termasuk nama, pengaturan, izin, dan tampilan yang sama.
- Mendapat manfaat dari pengoptimalan prediktif. Saat mengonversi tabel ke terkelola, pengoptimalan prediktif diatur ke
INHERIT, yang berarti mewarisi pengaturan dari tingkat skema atau katalog. Secara default, ini saat ini dinonaktifkan. Anda dapat mengaktifkan pengoptimalan prediktif pada tabel yang dikonversi dengan menjalankanALTER TABLE <table_name> ENABLE PREDICTIVE OPTIMIZATION, yang mengaturnya keENABLEDbukanINHERIT.
Prasyarat
- Format data: Format data tabel asing harus Delta Lake. Untuk melakukan konversi satu kali untuk Parquet, lihat Mengonversi ke Delta Lake.
- Jenis tabel: Jenis tabel HMS harus berupa tabel HMS eksternal. Perintah gagal jika tabel adalah tabel HMS terkelola.
- Runtime: Databricks Runtime 17.3 atau lebih tinggi
-
Izin:
OWNERatauMANAGEizin pada tabel danCREATEizin padaEXTERNAL LOCATION
Syntax
Untuk mengonversi tabel foreign Unity Catalog Anda menjadi Unity Catalog yang dikelola, jalankan perintah berikut:
ALTER TABLE source_table SET MANAGED {MOVE | COPY}
Parameter-parameternya
source_table
Tabel asing yang ada di Katalog Unity. Tabel asing berisi data dan metadata yang dikelola oleh katalog eksternal. Sebelum konversi, jika Anda menghilangkan tabel sumber di katalog eksternal, tabel asing juga dihilangkan di Katalog Unity. Setelah tabel dikonversi ke dikelola, menghilangkan tabel sumber di katalog eksternal tidak memengaruhi tabel terkelola Katalog Unity.
MOVEMengonversi tabel menjadi terkelola dan menonaktifkan akses ke tabel sumber di katalog eksternal.
Akses melalui katalog eksternal atau akses berbasis jalur gagal setelah tabel dikonversi. Semua pembaca dan penulis pada tabel harus menggunakan namespace Unity Catalog untuk akses.
Semua pembaca dan penulis harus menggunakan akses berbasis nama. Contohnya:
SELECT * FROM catalog_name.schema_name.table_name;Akses berbasis jalur tidak didukung dan gagal setelah tabel dikonversi. Contohnya:
SELECT * FROM delta.`protocol://path/to/table`;Klien eksternal (non-Azure Databricks) harus mendukung pembacaan ke tabel yang dikelola oleh Unity Catalog. Lihat Mode Kompatibilitas.
Gunakan dasbor Access Insights untuk melihat apakah pembaca dan penulis yang mengakses tabel Anda adalah Databricks Runtime atau klien eksternal non-Azure Databricks.
Pembaca dan penulis Azure Databricks harus menggunakan Databricks Runtime 15.4 LTS atau lebih tinggi. Jika pembaca atau penulis Anda menggunakan Databricks Runtime 14.3 LTS atau di bawahnya, lihat Opsi alternatif untuk pembaca dan penulis di Databricks Runtime 14.3 LTS atau di bawahnya.
Waktu henti dapat terjadi ketika pembaca atau penulis mengakses tabel selama konversi. Untuk informasi selengkapnya, lihat Mengonversi tabel eksternal ke tabel Katalog Unity terkelola.
Jika perintah Anda terganggu, tabel mungkin dibiarkan sebagai tabel eksternal karena konversi ke tabel terkelola belum selesai. Untuk menyelesaikan perintah, jalankan
SET MANAGEDlagi pada tabel eksternal.Pengoptimalan prediktif diatur ke
INHERITkecuali Anda mengonfigurasinya secara manual. Untuk memeriksa apakah pengoptimalan prediktif diaktifkan, lihat Memeriksa apakah pengoptimalan prediktif diaktifkan.Putar kembali: Untuk mengembalikan migrasi tabel dan mendapatkan kembali akses ke tabel sumber di katalog eksternal, jalankan
UNSET MANAGEDperintah . Tabel menjadi tabel eksternal setelah menjalankan perintah. Untuk mengembalikan tabel ke tabel asing, hapus tabel tersebut dan tabel itu akan dikonfigurasi ulang sebagai tabel asing dalam sinkronisasi katalog berikutnya.ALTER TABLE catalog.schema.my_managed_table UNSET MANAGEDPeringatan
Anda HARUS menjalankan
UNSET MANAGEDsebelum menghapus tabel. Menghilangkan tabel tanpa menjalankanUNSET MANAGEDterlebih dahulu dapat membuat sistem Anda dalam keadaan buruk dan dapat mengakibatkan kehilangan data atau inkonsistensi.Jika Anda mengembalikan perubahan, commit yang Anda buat ke lokasi eksternal antara konversi dan pembatalan dapat dikunjungi kembali berdasarkan versi tetapi tidak berdasarkan tanda waktu. Tujuh hari setelah pemutaran kembali, data di lokasi terkelola dihapus. Untuk pembaca dan penulis dalam Databricks Runtime 15.4 LTS atau lebih tinggi, riwayat komit tabel yang dilakukan setelah konversi tetapi sebelum pembatalan dapat ditelusuri berdasarkan versi tetapi tidak berdasarkan stempel waktu.
Setelah konversi tabel, Anda harus:
- Mulai ulang pekerjaan streaming apa pun (baca atau tulis) menggunakan tabel asing
- Pastikan pembaca dan penulis Anda bekerja dengan tabel yang dikelola.
COPYMengonversi tabel menjadi dikelola tanpa mengubah atau menonaktifkan akses ke tabel sumber di katalog eksternal.
- Selama konversi ke terkelola, data dari tabel sumber disalin ke lokasi penyimpanan terkelola yang ditentukan untuk tabel asing, membuat dua salinan terpisah: tabel terkelola baru dan tabel sumber di katalog eksternal.
- Tidak seperti
MOVEdi mana baca dan tulis gagal, saat menggunakanCOPY, Anda bertanggung jawab untuk menonaktifkan baca dan tulis dengan benar ke tabel sumber di katalog eksternal dan memastikan bahwa beban kerja telah bermigrasi ke katalog baru. -
Pembatalan: Untuk mengembalikan migrasi tabel, Anda tidak perlu menjalankan
UNSET MANAGEDperintah karena tabel sumber belum terganggu di katalog eksternal. Hapus tabel tersebut dan akan digabungkan kembali sebagai tabel eksternal dalam sinkronisasi katalog berikutnya.
Periksa konversi
Anda dapat mengonfirmasi bahwa tabel eksternal Anda telah dikonversi ke tabel terkelola:
DESCRIBE EXTENDED catalog_name.schema_name.table_name
Jika tabel telah dikonversi, bagian Type bawah col_name ditampilkan seperti MANAGED di bawah data_type.
Batasan yang diketahui
Mengonversi tabel asing ke tabel terkelola memiliki batasan berikut:
Klien streaming: Anda harus memulai ulang pekerjaan streaming apa pun setelah konversi.
Beberapa wilayah cloud: Jika lokasi terkelola default metastore, katalog, atau skema Unity Catalog Anda berada di wilayah cloud yang berbeda dari lokasi penyimpanan tabel asing yang dikonversi, Anda dapat dikenakan biaya transfer data lintas wilayah tambahan. Penyedia cloud memberlakukan biaya ini di luar kontrol Azure Databricks. Untuk memeriksa lokasi skema, katalog, dan metastore Anda, gunakan perintah berikut:
-- Check schema location DESCRIBE SCHEMA EXTENDED catalog_name.schema_name; -- Check catalog location DESCRIBE CATALOG EXTENDED catalog_name; -- Check metastore location DESCRIBE METASTORE;
FAQ
Bisakah saya membuat tabel serta mengonversi tabel dalam katalog asing?
Ya, Anda dapat membuat tabel eksternal atau terkelola di katalog asing. Perilaku tergantung pada konfigurasi skema:
-
Untuk skema Glue atau eHMS, atau untuk skema dengan lokasi yang diatur dalam Unity Catalog: Jika Anda menjalankan
CREATE TABLE foreign_catalog.schema.table, ini akan membuat tabel terkelola dalam Unity Catalog atau tabel eksternal. Tabel tidak dipindahkan atau disinkronkan ke katalog luar. -
Untuk skema dari koneksi metastore Apache Hive internal: Jika Anda mencoba membuat tabel dalam skema asing, skema tersebut masih membuat tabel asing dan juga membuat tabel di
hive_metastore. - Untuk metastore Hive ruang kerja lama: Karena ini adalah federasi baca dan tulis, jika Anda membuat tabel di katalog asing, tabel tersebut juga akan dibuat di metastore Hive internal.
Bagaimana jika tabel eksternal saya berbasis DBFS?
Saat mengonversi tabel yang didukung DBFS, kami menyimpan pemetaan jalur DBFS saat ini ke jalur cloud sebagai lokasi jalur cloud tabel eksternal.
Dapatkah saya mengonversi pada tingkat skema atau katalog?
Anda dapat melakukan iterasi melalui tabel dalam skema untuk dikonversi satu per satu, atau menggunakan proyek lab discoverx untuk mengonversi seluruh skema atau katalog sekaligus:
df = (dx.from_tables("prod.*.*")
.with_sql("ALTER TABLE {full_table_name} SET MANAGED;")
.apply())