Bagikan melalui


praktik terbaikuntukKatalog DBFS dan Unity

Unity Catalog memperkenalkan sejumlah konfigurasi dan konsep baru yang mendekati tata kelola data sepenuhnya berbeda dari DBFS. Artikel ini menguraikan beberapa praktik terbaik sekeliling bekerja dengan lokasi eksternal Unity Catalog dan DBFS.

Databricks merekomendasikan untuk tidak menggunakan DBFS dan penyimpanan objek cloud yang dipasang untuk sebagian besar kasus penggunaan di ruang kerja Azure Databricks dengan dukungan Katalog Unity. Artikel ini menjelaskan beberapa skenario di mana Anda harus menggunakan penyimpanan objek cloud yang dipasang. Perhatikan bahwa Databricks tidak merekomendasikan penggunaan akar DBFS bersama dengan Katalog Unity, kecuali Anda harus memigrasikan file atau data yang disimpan di sana ke Dalam Katalog Unity.

Bagaimana DBFS digunakan di ruang kerja yang mendukung Katalog Unity?

Tindakan yang dilakukan terhadap tabel dalam hive_metastore menggunakan pola akses data warisan, yang mungkin menyertakan data dan kredensial penyimpanan yang dikelola oleh DBFS. Tabel terkelola dalam cakupan hive_metastore ruang kerja disimpan di akar DBFS.

Bagaimana cara kerja DBFS dalam mode akses pengguna tunggal?

Kluster yang dikonfigurasi dengan mode akses pengguna tunggal memiliki akses penuh ke DBFS, termasuk semua file di akar DBFS dan data yang dipasang.

Bagaimana cara kerja DBFS dalam mode akses bersama?

Mode akses bersama menggabungkan tata kelola data Unity Catalog dengan ACL tabel warisan Azure Databricks. Akses ke data di hive_metastore hanya tersedia untuk pengguna yang memiliki izin yang diberikan secara eksplisit.

Untuk berinteraksi dengan file secara langsung menggunakan DBFS, Anda harus memiliki ANY FILE izin yang diberikan. Karena ANY FILE memungkinkan pengguna untuk melewati ACL tabel warisan di hive_metastore dan mengakses semua data yang dikelola oleh DBFS, Databricks merekomendasikan perhatian saat memberikan hak istimewa ini.

Jangan gunakan DBFS dengan lokasi eksternal Katalog Unity

Katalog Unity mengamankan akses ke data di lokasi eksternal dengan menggunakan jalur URI cloud penuh untuk mengidentifikasi hibah pada direktori penyimpanan objek terkelola. Pemasangan DBFS menggunakan model akses data yang sama sekali berbeda yang melewati Unity Catalog sepenuhnya. Databricks menyarankan agar Anda tidak menggunakan kembali volume penyimpanan objek cloud antara pemasangan DBFS dan volume eksternal UC, termasuk saat berbagi data di seluruh ruang kerja atau akun.

Mengamankan penyimpanan yang dikelola Katalog Unity Anda

Katalog Unity menggunakan lokasi penyimpanan terkelola untuk menyimpan file data untuk tabel dan volume terkelola.

Databricks merekomendasikan hal berikut untuk lokasi penyimpanan terkelola:

  • Gunakan akun penyimpanan atau wadah baru.
  • Tentukan kebijakan identitas kustom untuk Katalog Unity.
  • Batasi semua akses ke Azure Databricks yang dikelola oleh Unity Catalog.
  • Batasi semua akses ke kebijakan akses identitas yang dibuat untuk Katalog Unity.

Menambahkan data yang sudah ada ke lokasi eksternal

Dimungkinkan untuk memuat akun penyimpanan yang ada ke Unity Catalog menggunakan lokasi eksternal. Untuk keamanan terbesar, Databricks hanya merekomendasikan pemuatan akun penyimpanan ke lokasi eksternal setelah mencabut semua kredensial penyimpanan dan pola akses lainnya.

Anda tidak boleh memuat akun penyimpanan yang digunakan sebagai akar DBFS sebagai lokasi eksternal di Unity Catalog.

Konfigurasi kluster diabaikan oleh akses sistem file Katalog Unity

Katalog Unity tidak menghormati konfigurasi kluster untuk pengaturan sistem file. Ini berarti bahwa pengaturan sistem file Hadoop untuk mengonfigurasi perilaku kustom dengan penyimpanan objek cloud tidak berfungsi saat mengakses data menggunakan Katalog Unity.

Batasan di sekitar akses beberapa jalur

Meskipun Anda umumnya dapat menggunakan Unity Catalog dan DBFS bersama-sama, jalur yang sama atau berbagi hubungan induk/anak tidak dapat dirujuk dalam perintah atau sel buku catatan yang sama menggunakan metode akses yang berbeda.

Misalnya, jika tabel foo eksternal didefinisikan di hive_metastore lokasi a/b/c dan lokasi eksternal ditentukan dalam Katalog Unity pada a/b/, kode berikut akan melemparkan kesalahan:

spark.read.table("foo").filter("id IS NOT NULL").write.mode("overwrite").save("a/b/c")

Kesalahan ini tidak akan muncul jika logika ini dipecah menjadi dua sel:

df = spark.read.table("foo").filter("id IS NOT NULL")
df.write.mode("overwrite").save("a/b/c")