Apa itu volume Katalog Unity?

Volume adalah objek Katalog Unity yang memungkinkan tata kelola atas himpunan data non-tabular. Volume mewakili volume penyimpanan logis di lokasi penyimpanan objek cloud. Volume menyediakan kemampuan untuk mengakses, menyimpan, mengelola, dan mengatur file.

Saat tabel mengatur data tabular, volume mengatur data non-tabular dari format apa pun, termasuk terstruktur, semi terstruktur, atau tidak terstruktur.

Databricks merekomendasikan penggunaan volume untuk mengatur akses ke semua data non-tabular. Volume tersedia dalam dua jenis:

  • Volume terkelola: Untuk penyimpanan sederhana yang dikelola Databricks.
  • Volume eksternal: Untuk menambahkan tata kelola ke lokasi penyimpanan objek cloud yang ada.

Kasus penggunaan untuk volume

Contoh penggunaan untuk volume meliputi:

  • Daftarkan area pendaratan untuk data mentah yang diproduksi oleh sistem eksternal untuk mendukung pemrosesan mereka pada tahap awal alur ETL dan aktivitas rekayasa data lainnya.
  • Daftarkan lokasi penahapan untuk penyerapan. Misalnya, menggunakan pernyataan Auto Loader, COPY INTO, atau CTAS (CREATE TABLE AS).
  • Menyediakan lokasi penyimpanan file bagi ilmuwan data, analis data, dan insinyur pembelajaran mesin untuk digunakan sebagai bagian dari analisis data eksploratif mereka dan tugas ilmu data lainnya.
  • Beri pengguna Azure Databricks akses ke file arbitrer yang diproduksi dan disimpan di penyimpanan cloud oleh sistem lain. Misalnya, kumpulan besar data yang tidak terstruktur (seperti file gambar, audio, video, dan PDF) yang diambil oleh sistem pengawasan atau perangkat IoT, atau file pustaka (file roda JAR dan Python) yang diekspor dari sistem manajemen dependensi lokal atau alur CI/CD.
  • Simpan data operasional, seperti pencatatan log atau file titik pemeriksaan.

Untuk demo bekerja dengan volume, lihat Menyederhanakan Pengambilan File, Gambar, dan Data dengan Volume Katalog Unity.

Important

Anda tidak dapat mendaftarkan file dalam volume sebagai tabel di Unity Catalog. Volume hanya ditujukan untuk akses data yang berbasis jalur. Gunakan tabel saat Anda ingin bekerja dengan data tabular di Unity Catalog.

Volume terkelola versus volume eksternal

Volume terkelola dan eksternal memberikan pengalaman yang hampir identik saat menggunakan alat, UI, dan API Azure Databricks. Perbedaan utama berkaitan dengan lokasi penyimpanan, siklus hidup, dan kontrol:

Fitur Volume yang dikelola Volume eksternal
Lokasi penyimpanan Dibuat dalam penyimpanan yang dikelola UC untuk skema data Terdaftar pada jalur penyimpanan objek cloud yang ada
Siklus hidup data UC mengelola penataan dan penghapusan (periode retensi 7 hari setelah dihapus) Data tetap berada di penyimpanan cloud saat Anda menghilangkan volume
Kontrol akses Semua akses melalui UC UC mengatur akses, tetapi alat eksternal dapat menggunakan URI langsung
Migrasi diperlukan? Tidak. Tidak—gunakan jalur penyimpanan yang ada as-is
Kasus penggunaan umum Opsi paling sederhana untuk beban kerja yang khusus untuk Databricks Mixed Databricks dan akses sistem eksternal

Mengapa menggunakan volume terkelola?

Volume terkelola memiliki manfaat berikut:

  • Pilihan default untuk beban kerja Databricks.
  • Tidak perlu mengelola kredensial cloud atau jalur penyimpanan secara manual.
  • Opsi paling sederhana untuk membuat lokasi penyimpanan yang diatur dengan cepat.

Mengapa menggunakan volume eksternal?

Volume eksternal memungkinkan Anda menambahkan tata kelola data Katalog Unity ke direktori penyimpanan objek cloud yang ada. Beberapa kasus penggunaan untuk volume eksternal meliputi yang berikut ini:

  • Menambahkan tata kelola tempat data sudah berada, tanpa memerlukan salinan data.
  • Mengatur file yang dihasilkan oleh sistem lain yang harus diserap atau diakses oleh Azure Databricks.
  • Mengatur data yang dihasilkan oleh Azure Databricks yang harus diakses langsung dari penyimpanan objek cloud oleh sistem lain.

Databricks merekomendasikan penggunaan volume eksternal untuk menyimpan file data non-tabular yang dibaca atau ditulis oleh sistem eksternal selain Azure Databricks. Katalog Unity tidak mengatur baca dan tulis yang dilakukan langsung terhadap penyimpanan objek cloud dari sistem eksternal, jadi Anda harus mengonfigurasi kebijakan dan kredensial tambahan di akun cloud Anda sehingga kebijakan tata kelola data dihormati di luar Azure Databricks.

Jalur untuk mengakses file dalam volume

Volume berada di tingkat ketiga dari namespace tiga tingkat layanan Unity Catalog (catalog.schema.volume):

Diagram model objek Katalog Unity, yang berfokus pada volume

Jalur untuk mengakses volume sama apakah Anda menggunakan Apache Spark, SQL, Python, atau bahasa dan pustaka lainnya. Ini berbeda dari pola akses warisan untuk file dalam penyimpanan objek yang terikat ke ruang kerja Azure Databricks.

Jalur untuk mengakses file dalam volume menggunakan format berikut:

/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

Azure Databricks juga mendukung skema opsional dbfs:/ saat bekerja dengan Apache Spark, sehingga jalur berikut juga berfungsi:

dbfs:/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

Bagian rute /<catalog>/<schema>/<volume> dipetakan ke tiga nama objek dalam Katalog Unity untuk file tersebut. Direktori ini bersifat baca-saja dan dikelola secara otomatis oleh Unity Catalog. Anda tidak dapat membuat atau menghapusnya dengan perintah filesystem.

Note

Anda juga dapat mengakses data dalam volume eksternal menggunakan URI penyimpanan cloud.

Jalur yang Disediakan untuk Volume

Volume memperkenalkan jalur cadangan berikut yang digunakan untuk mengakses volume:

  • dbfs:/Volumes
  • /Volumes

Note

Jalur juga dicadangkan untuk potensi kesalahan ketik pada jalur dari API Apache Spark dan dbutils, termasuk /volumes, /Volume, /volume, apakah didahului oleh dbfs:/ atau tidak. Jalur /dbfs/Volumes ini juga dicadangkan, tetapi tidak dapat digunakan untuk mengakses volume.

Volume-volume hanya didukung pada Databricks Runtime 13.3 LTS atau yang lebih baru. Dalam Databricks Runtime 12.2 LTS dan di bawahnya, operasi terhadap jalur /Volumes mungkin berhasil, tetapi hanya dapat menulis data ke disk penyimpanan sementara yang terpasang pada kluster komputasi daripada menyimpan data ke volume Katalog Unity seperti yang diharapkan.

Important

Jika Anda memiliki data yang sudah ada sebelumnya yang disimpan di jalur yang dipesan di akar DBFS, ajukan tiket dukungan untuk mendapatkan akses sementara ke data ini untuk memindahkannya ke lokasi lain.

Persyaratan komputasi

Saat bekerja dengan volume, Anda harus menggunakan gudang SQL atau kluster yang menjalankan Databricks Runtime 13.3 LTS atau lebih tinggi, kecuali Anda menggunakan UI Azure Databricks seperti Catalog Explorer.

Untuk informasi tentang menyimpan titik pemeriksaan DataFrame dalam volume, lihat Titik pemeriksaan DataFrame dalam volume.

Limitations

Anda harus menggunakan komputasi yang mendukung Unity Catalog untuk berinteraksi dengan volume Unity Catalog.

Tabel berikut menguraikan batasan volume Unity Catalog berdasarkan versi Databricks Runtime:

Versi Databricks Runtime Limitations
Semua versi Databricks Runtime yang didukung
  • Volume tidak mendukung perintah dbutils.fs yang didistribusikan kepada pelaksana.
  • Unity Catalog UDF tidak mendukung akses jalur file volume.
  • Anda tidak dapat mengakses volume dari RDD.
  • Anda tidak dapat menggunakan perintah spark-submit versi lama dengan JAR yang disimpan dalam volume. Sebagai gantinya, gunakan tugas JAR. Lihat tugas JAR untuk pekerjaan.
  • Anda tidak dapat menetapkan dependensi ke pustaka lain yang diakses melalui jalur volume dalam file wheel atau JAR.
  • Anda tidak dapat mencantumkan objek Katalog Unity menggunakan /Volumes/<catalog-name> pola atau /Volumes/<catalog-name>/<schema-name> . Anda harus menggunakan path lengkap yang mencakup nama volume, dalam format Volumes/<catalog-name>/<schema-name>/<volume-name>. Misalnya, dbutils.fs.ls("/Volumes/MyCatalog/MySchema/MyVolume")
  • %sh mv tidak didukung untuk memindahkan file antar volume. Gunakan dbutils.fs.mv atau %sh cp sebagai gantinya.
  • Anda tidak dapat membuat sistem file Hadoop kustom dengan volume. Misalnya, menggunakan new Path("dbfs:/Volumes/main/default/test-volume/file.txt") untuk membuat org.apache.hadoop.fs.path objek tidak akan berfungsi.
  • Volume-data tidak tersedia di wilayah Azure Government atau ruang kerja dengan kepatuhan FedRAMP.
  • Anda harus menggunakan format lintasan dengan skema dbfs:/ di panel konfigurasi pustaka Azure Data Factory, misalnya, dbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/file.
14.3 LTS ke atas
  • Pada komputasi dengan mode akses khusus (sebelumnya mode akses pengguna tunggal), Anda tidak dapat mengakses volume dari utas dan subproses di Scala.
14.2 ke bawah
  • Pada komputasi yang dikonfigurasi dengan mode akses standar (sebelumnya mode akses bersama), Anda tidak dapat menggunakan UDF untuk mengakses volume.
    • Baik Python maupun Scala memiliki akses ke FUSE dari driver tetapi tidak dari eksekutor.
    • Kode Scala yang melakukan operasi I/O dapat berjalan pada driver tetapi bukan pelaksana.
  • Pada komputasi yang dikonfigurasi dengan mode akses khusus, tidak ada dukungan untuk FUSE di Scala, kode Scala IO yang mengakses data menggunakan jalur volume, atau UDF Scala. UDF Python didukung dalam mode akses khusus.

Langkah selanjutnya

Artikel berikut ini menyediakan informasi selengkapnya tentang penggunaan volume.