Bagikan melalui


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.

Meskipun tabel menyediakan tata kelola atas himpunan data tabular, volume menambahkan tata kelola atas himpunan data non-tabular. Anda dapat menggunakan volume untuk menyimpan dan mengakses file dalam format apa pun, termasuk data terstruktur, semi terstruktur, dan tidak terstruktur.

Databricks merekomendasikan penggunaan volume untuk mengatur akses ke semua data non-tabular. Seperti tabel, volume dapat dikelola atau bersifat eksternal.

Penting

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

Artikel berikut ini menyediakan informasi selengkapnya tentang penggunaan volume.

Catatan

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.

Apa itu volume terkelola?

Volume terkelola adalah volume penyimpanan yang diatur Oleh Katalog Unity yang dibuat dalam lokasi penyimpanan terkelola dari skema yang berisi. Lihat Menentukan lokasi penyimpanan terkelola di Unity Catalog.

Volume terkelola memungkinkan pembuatan penyimpanan yang diatur kebijakan untuk bekerja dengan file tanpa beban tambahan dari lokasi eksternal dan kredensial penyimpanan. Anda tidak perlu menentukan lokasi saat membuat volume terkelola, dan semua akses file untuk data dalam volume terkelola adalah melalui jalur yang dikelola oleh Katalog Unity.

Apa itu volume eksternal?

Volume eksternal adalah volume penyimpanan yang dikelola oleh Katalog Unity, terdaftar pada direktori dalam lokasi eksternal dengan menggunakan kredensial penyimpanan yang diatur oleh Katalog Unity.

Katalog Unity tidak mengelola siklus hidup dan tata letak file dalam volume eksternal. Saat Anda menghapus volume eksternal, Unity Catalog tidak menghapus data yang mendasar.

Jalur apa yang digunakan 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>

Urutan /<catalog>/<schema>/<volume> dalam jalur sesuai dengan tiga nama objek Katalog Unity yang terkait dengan file. Elemen jalur ini bersifat baca-saja dan tidak dapat ditulis secara langsung oleh pengguna, yang berarti tidak mungkin untuk membuat atau menghapus direktori ini menggunakan operasi sistem file. Mereka dikelola secara otomatis dan tetap sinkron dengan entitas Katalog Unity yang sesuai.

Catatan

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

Jalur yang dicadangkan untuk volume

Volume memperkenalkan jalur cadangan berikut yang digunakan untuk mengakses volume:

  • dbfs:/Volumes
  • /Volumes

Catatan

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 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.

Penting

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

Batasan

Anda harus menggunakan komputasi yang mendukung Unity Catalog untuk berinteraksi dengan volume Unity Catalog. Volume tidak mendukung semua beban kerja.

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

Versi Databricks Runtime Batasan
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.
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 spark-submit dengan JAR yang disimpan dalam volume.
  • Anda tidak dapat menentukan dependensi ke pustaka lain yang diakses melalui jalur volume dalam file wheel atau file 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")
  • Titik akhir DBFS untuk REST API tidak mendukung jalur volume.
  • Anda tidak dapat menentukan volume sebagai tujuan untuk pengiriman log kluster.
  • %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 objek org.apache.hadoop.fs.path tidak akan berfungsi.
  • Volume 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.