Bagikan melalui


Mengonversi tabel asing ke tabel Katalog Unity terkelola

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.

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 menjalankan ALTER TABLE <table_name> ENABLE PREDICTIVE OPTIMIZATION, yang mengaturnya ke ENABLED bukan INHERIT.

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: OWNER atau MANAGE izin pada tabel dan CREATE izin pada EXTERNAL 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.

  • MOVE

    Mengonversi 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 MANAGED lagi pada tabel eksternal.

    • Pengoptimalan prediktif diatur ke INHERIT kecuali 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 MANAGED perintah . 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 MANAGED
      

      Peringatan

      Anda HARUS menjalankan UNSET MANAGED sebelum menghapus tabel. Menghilangkan tabel tanpa menjalankan UNSET MANAGED terlebih 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.
  • COPY

    Mengonversi 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 MOVE di mana baca dan tulis gagal, saat menggunakan COPY, 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 MANAGED perintah 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())