Bagikan melalui


Bekerja dengan file di Azure Databricks

Azure Databricks memiliki beberapa utilitas dan API untuk berinteraksi dengan file di lokasi berikut:

  • Volume Katalog Unity
  • File ruang kerja
  • Penyimpanan objek awan
  • Pemasangan DBFS dan akar DBFS
  • Penyimpanan sementara yang terpasang pada simpul penggerak kluster

Artikel ini memiliki contoh untuk berinteraksi dengan file di lokasi ini untuk alat berikut:

  • Apache Spark
  • Spark SQL dan Databricks SQL
  • Utilitas sistem file Databricks (dbutils.fs atau %fs)
  • Databricks CLI (antarmuka baris perintah)
  • Databricks REST API
  • Perintah shell Bash (%sh)
  • Penginstalan pustaka dengan cakupan notebook menggunakan %pip
  • Panda
  • Utilitas manajemen dan pemrosesan file OSS Python

Penting

Beberapa operasi di Databricks, terutama yang menggunakan pustaka Java atau Scala, berjalan sebagai proses JVM, misalnya:

  • Menentukan dependensi file JAR menggunakan --jars dalam konfigurasi Spark
  • Memanggil cat atau java.io.File di buku catatan Scala
  • Sumber data kustom, seperti spark.read.format("com.mycompany.datasource")
  • Pustaka yang memuat file menggunakan Java FileInputStream atau Paths.get()

Operasi ini tidak mendukung membaca atau menulis pada volume Katalog Unity atau file ruang kerja menggunakan path file standar, seperti /Volumes/my-catalog/my-schema/my-volume/my-file.csv. Jika Anda perlu mengakses file volume atau file ruang kerja dari dependensi JAR atau pustaka berbasis JVM, salin file tersebut terlebih dahulu ke penyimpanan lokal komputer menggunakan Python atau perintah seperti %sh dan %sh mv.. Jangan gunakan %fs dan dbutils.fs yang menggunakan JVM. Untuk mengakses file yang sudah disalin secara lokal, gunakan perintah khusus bahasa seperti Python shutil atau gunakan %sh perintah. Jika file perlu ada selama mulai kluster, gunakan skrip init untuk memindahkan file terlebih dahulu. Lihat Apa itu skrip init?.

Apakah saya perlu menyediakan skema URI untuk mengakses data?

Jalur akses data di Azure Databricks mengikuti salah satu standar berikut:

  • jalur gaya URI menyertakan skema URI. Untuk solusi akses data asli Databricks, skema URI bersifat opsional untuk sebagian besar kasus penggunaan. Saat langsung mengakses data di penyimpanan objek cloud, Anda harus menyediakan skema URI yang benar untuk jenis penyimpanan.

    diagram jalur URI

  • jalur berformat POSIX menyediakan akses data yang relatif terhadap akar driver (/). Jalur bergaya POSIX tidak pernah memerlukan skema. Anda dapat menggunakan volume Unity Catalog atau mount DBFS untuk menyediakan akses bergaya POSIX ke data di penyimpanan objek cloud. Banyak kerangka kerja ML dan modul OSS Python lainnya memerlukan FUSE dan hanya dapat menggunakan jalur bergaya POSIX.

    diagram jalur-jalur POSIX

Nota

Operasi file yang memerlukan akses data FUSE tidak dapat langsung mengakses penyimpanan objek cloud menggunakan URI. Databricks merekomendasikan penggunaan volume Unity Catalog untuk mengonfigurasi akses ke lokasi ini untuk FUSE.

Pada komputasi yang dikonfigurasi dengan mode akses khusus (sebelumnya mode akses pengguna tunggal) dan Databricks Runtime 14.3 ke atas, Scala mendukung FUSE untuk volume Katalog Unity dan file ruang kerja, kecuali untuk subproses yang berasal dari Scala, seperti perintah Scala "cat /Volumes/path/to/file".!!.

Bekerja dengan file dalam volume Katalog Unity

Databricks merekomendasikan penggunaan volume Unity Catalog untuk mengonfigurasi akses ke file data non-tabular yang disimpan di penyimpanan objek cloud. Untuk dokumentasi lengkap tentang mengelola file dalam volume, termasuk instruksi terperinci dan praktik terbaik, lihat Bekerja dengan file dalam volume Katalog Unity.

Contoh berikut menunjukkan operasi umum menggunakan alat dan antarmuka yang berbeda:

Alat Contoh
Apache Spark spark.read.format("json").load("/Volumes/my_catalog/my_schema/my_volume/data.json").show()
Spark SQL dan Databricks SQL SELECT * FROM csv.`/Volumes/my_catalog/my_schema/my_volume/data.csv`;
LIST '/Volumes/my_catalog/my_schema/my_volume/';
Utilitas sistem file Databricks dbutils.fs.ls("/Volumes/my_catalog/my_schema/my_volume/")
%fs ls /Volumes/my_catalog/my_schema/my_volume/
Databricks CLI (antarmuka baris perintah) databricks fs cp /path/to/local/file dbfs:/Volumes/my_catalog/my_schema/my_volume/
Databricks REST API POST https://<databricks-instance>/api/2.1/jobs/create
{"name": "A multitask job", "tasks": [{..."libraries": [{"jar": "/Volumes/dev/environment/libraries/logging/Logging.jar"}],},...]}
Perintah shell Bash %sh curl http://<address>/text.zip -o /Volumes/my_catalog/my_schema/my_volume/tmp/text.zip
Instalasi perpustakaan %pip install /Volumes/my_catalog/my_schema/my_volume/my_library.whl
Panda df = pd.read_csv('/Volumes/my_catalog/my_schema/my_volume/data.csv')
Perangkat Lunak Sumber Terbuka Python os.listdir('/Volumes/my_catalog/my_schema/my_volume/path/to/directory')

Untuk informasi tentang batasan dan solusi volume, lihat Batasan bekerja dengan file dalam volume.

Bekerja dengan file ruang kerja

Databricks file-file ruang kerja merupakan file yang ada di ruang kerja, disimpan di akun penyimpanan untuk ruang kerja . Anda dapat menggunakan file ruang kerja untuk menyimpan dan mengakses file seperti notebook, file kode sumber, file data, dan aset ruang kerja lainnya.

Penting

Karena file ruang kerja memiliki batasan ukuran, Databricks merekomendasikan hanya menyimpan file data kecil di sini terutama untuk pengembangan dan pengujian. Untuk rekomendasi tentang tempat menyimpan jenis file lain, lihat Jenis file.

Alat Contoh
Apache Spark spark.read.format("json").load("file:/Workspace/Users/<user-folder>/data.json").show()
Spark SQL dan Databricks SQL SELECT * FROM json.`file:/Workspace/Users/<user-folder>/file.json`;
Utilitas sistem file Databricks dbutils.fs.ls("file:/Workspace/Users/<user-folder>/")
%fs ls file:/Workspace/Users/<user-folder>/
Databricks CLI (antarmuka baris perintah) databricks workspace list
Databricks REST API POST https://<databricks-instance>/api/2.0/workspace/delete
{"path": "/Workspace/Shared/code.py", "recursive": "false"}
Perintah shell Bash %sh curl http://<address>/text.zip -o /Workspace/Users/<user-folder>/text.zip
Instalasi perpustakaan %pip install /Workspace/Users/<user-folder>/my_library.whl
Panda df = pd.read_csv('/Workspace/Users/<user-folder>/data.csv')
Perangkat Lunak Sumber Terbuka Python os.listdir('/Workspace/Users/<user-folder>/path/to/directory')

Nota

Skema file:/ diperlukan saat bekerja dengan Utilitas Databricks, Apache Spark, atau SQL.

Di ruang kerja tempat DBFS root dan mounts dinonaktifkan, Anda juga dapat menggunakan dbfs:/Workspace untuk mengakses file ruang kerja dengan Utility Databricks. Ini memerlukan Databricks Runtime 13.3 LTS atau lebih tinggi. Lihat Menonaktifkan akses ke akar dan pemasangan DBFS di ruang kerja Azure Databricks yang ada.

Untuk batasan dalam bekerja dengan file ruang kerja, lihat Batasan.

Ke mana file ruang kerja yang dihapus pergi?

Menghapus file dari ruang kerja akan memindahkannya ke tong sampah. Anda dapat memulihkan atau menghapus file secara permanen dari tempat sampah menggunakan UI.

Lihat Menghapus objek.

Bekerja dengan file di penyimpanan objek cloud

Databricks merekomendasikan penggunaan volume Unity Catalog untuk mengonfigurasi akses aman ke file di penyimpanan objek cloud. Anda harus mengonfigurasi izin jika Anda memilih untuk mengakses data langsung di penyimpanan objek cloud menggunakan URI. Lihat Volume terkelola dan eksternal.

Contoh berikut menggunakan URI untuk mengakses data di penyimpanan objek cloud:

Alat Contoh
Apache Spark spark.read.format("json").load("abfss://container-name@storage-account-name.dfs.core.windows.net/path/file.json").show()
Spark SQL dan Databricks SQL SELECT * FROM csv.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/file.json`; LIST 'abfss://container-name@storage-account-name.dfs.core.windows.net/path';
Utilitas sistem file Databricks dbutils.fs.ls("abfss://container-name@storage-account-name.dfs.core.windows.net/path/") %fs ls abfss://container-name@storage-account-name.dfs.core.windows.net/path/
Databricks CLI (antarmuka baris perintah) Tidak didukung
Databricks REST API Tidak didukung
Perintah shell Bash Tidak didukung
Instalasi perpustakaan %pip install abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/library.whl
Panda Tidak didukung
Perangkat Lunak Sumber Terbuka Python Tidak didukung

Bekerja dengan file di mount DBFS dan root DBFS

Penting

Root DBFS dan pemasangan DBFS sudah dihentikan dan tidak direkomendasikan oleh Databricks. Akun baru disediakan tanpa akses ke fitur-fitur ini. Databricks merekomendasikan penggunaan volume dari Unity Catalog, lokasi eksternal, atau file ruang kerja sebagai gantinya.

Alat Contoh
Apache Spark spark.read.format("json").load("/mnt/path/to/data.json").show()
Spark SQL dan Databricks SQL SELECT * FROM json.`/mnt/path/to/data.json`;
Utilitas sistem file Databricks dbutils.fs.ls("/mnt/path")
%fs ls /mnt/path
Databricks CLI (antarmuka baris perintah) databricks fs cp dbfs:/mnt/path/to/remote/file /path/to/local/file
Databricks REST API POST https://<host>/api/2.0/dbfs/delete --data '{ "path": "/tmp/HelloWorld.txt" }'
Perintah shell Bash %sh curl http://<address>/text.zip > /dbfs/mnt/tmp/text.zip
Instalasi perpustakaan %pip install /dbfs/mnt/path/to/my_library.whl
Panda df = pd.read_csv('/dbfs/mnt/path/to/data.csv')
Perangkat Lunak Sumber Terbuka Python os.listdir('/dbfs/mnt/path/to/directory')

Nota

Skema dbfs:/ diperlukan saat bekerja dengan Databricks CLI.

Bekerja dengan file dalam penyimpanan sementara yang terpasang pada simpul driver

Penyimpanan ephemeral yang terpasang pada simpul driver adalah penyimpanan blok dengan akses jalur berbasis POSIX bawaan. Setiap data yang disimpan di lokasi ini menghilang ketika kluster berakhir atau dimulai ulang.

Alat Contoh
Apache Spark Tidak didukung
Spark SQL dan Databricks SQL Tidak didukung
Utilitas sistem file Databricks dbutils.fs.ls("file:/path")
%fs ls file:/path
Databricks CLI (antarmuka baris perintah) Tidak didukung
Databricks REST API Tidak didukung
Perintah shell Bash %sh curl http://<address>/text.zip > /tmp/text.zip
Instalasi perpustakaan Tidak didukung
Panda df = pd.read_csv('/path/to/data.csv')
Perangkat Lunak Sumber Terbuka Python os.listdir('/path/to/directory')

Nota

Skema file:/ diperlukan saat bekerja dengan Utilitas Databricks.

Memindahkan data dari penyimpanan ephemeral ke volume

Anda mungkin ingin mengakses data yang diunduh atau disimpan ke penyimpanan ephemeral menggunakan Apache Spark. Karena penyimpanan ephemeral melekat pada driver dan Spark adalah mesin pemrosesan terdistribusi, tidak semua operasi dapat langsung mengakses data di sini. Misalkan Anda harus memindahkan data dari sistem file driver ke volume Unity Catalog. Dalam hal ini, Anda dapat menyalin file menggunakan perintah ajaib atau utilitas Databricks, seperti dalam contoh berikut:

dbutils.fs.cp ("file:/<path>", "/Volumes/<catalog>/<schema>/<volume>/<path>")
%sh cp /<path> /Volumes/<catalog>/<schema>/<volume>/<path>
%fs cp file:/<path> /Volumes/<catalog>/<schema>/<volume>/<path>

Sumber daya tambahan

Untuk informasi tentang mengunggah file lokal atau mengunduh file internet ke Azure Databricks, lihat Mengunggah file ke Azure Databricks.