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 cloud
  • Pemasangan DBFS dan akar DBFS
  • Penyimpanan Ephemeral yang terpasang pada simpul driver 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
  • Databricks REST API
  • Perintah shell Bash (%sh)
  • Penginstalan pustaka dengan cakupan buku catatan menggunakan %pip
  • pandas
  • Utilitas manajemen dan pemrosesan file OSS Python

Penting

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.

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

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 bergaya POSIX menyediakan akses data relatif terhadap akar driver (/). Jalur bergaya POSIX tidak pernah memerlukan skema. Anda dapat menggunakan volume Unity Catalog atau pemasangan DBFS untuk menyediakan akses gaya 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 POSIX

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. Lihat Apa itu volume Katalog Unity?.

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 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
Penginstalan pustaka %pip install /Volumes/my_catalog/my_schema/my_volume/my_library.whl
Pandas df = pd.read_csv('/Volumes/my_catalog/my_schema/my_volume/data.csv')
OSS Python os.listdir('/Volumes/my_catalog/my_schema/my_volume/path/to/directory')

Catatan

dbfs:/ Skema diperlukan saat bekerja dengan Databricks CLI.

Batasan volume

Volume memiliki batasan berikut:

  • Penulisan direct-append atau non-sequential (acak), seperti menulis file Zip dan Excel tidak didukung. Untuk beban kerja direct-append atau random-write, lakukan operasi pada disk lokal terlebih dahulu lalu salin hasilnya ke volume Unity Catalog. Contohnya:

    # python
    import xlsxwriter
    from shutil import copyfile
    
    workbook = xlsxwriter.Workbook('/local_disk0/tmp/excel.xlsx')
    worksheet = workbook.add_worksheet()
    worksheet.write(0, 0, "Key")
    worksheet.write(0, 1, "Value")
    workbook.close()
    
    copyfile('/local_disk0/tmp/excel.xlsx', '/Volumes/my_catalog/my_schema/my_volume/excel.xlsx')
    
  • File jarang tidak didukung. Untuk menyalin file sparse, gunakan cp --sparse=never:

    $ cp sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file
    error writing '/dbfs/sparse.file': Operation not supported
    $ cp --sparse=never sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file
    

Bekerja dengan file ruang kerja

File ruang kerja Databricks adalah file di ruang kerja yang bukan buku catatan. Anda dapat menggunakan file ruang kerja untuk menyimpan dan mengakses data dan file lain yang disimpan bersama notebook dan aset ruang kerja lainnya. Karena file ruang kerja memiliki batasan ukuran, Databricks merekomendasikan hanya menyimpan file data kecil di sini terutama untuk pengembangan dan pengujian.

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 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
Penginstalan pustaka %pip install /Workspace/Users/<user-folder>/my_library.whl
Pandas df = pd.read_csv('/Workspace/Users/<user-folder>/data.csv')
OSS Python os.listdir('/Workspace/Users/<user-folder>/path/to/directory')

Catatan

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

Batasan file ruang kerja

File ruang kerja memiliki batasan berikut:

  • Ukuran file ruang kerja dibatasi hingga 500MB dari UI. Ukuran file maksimum yang diizinkan saat menulis dari kluster adalah 256 MB.

  • Jika alur kerja Anda menggunakan kode sumber yang terletak di repositori Git jarak jauh, Anda tidak dapat menulis ke direktori saat ini atau menulis menggunakan jalur relatif. Menulis data ke opsi lokasi lain.

  • Anda tidak dapat menggunakan git perintah saat menyimpan ke file ruang kerja. Pembuatan .git direktori tidak diperbolehkan dalam file ruang kerja.

  • Ada dukungan terbatas untuk operasi file ruang kerja dari komputasi tanpa server.

  • Pelaksana tidak dapat menulis ke file ruang kerja.

  • symlink tidak didukung.

  • File ruang kerja tidak dapat diakses dari fungsi yang ditentukan pengguna (UDF) pada kluster dengan mode akses bersama pada Databricks Runtime 14.2 ke bawah.

Ke mana file ruang kerja yang dihapus pergi?

Menghapus file ruang kerja mengirimkannya ke tempat 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 langsung mengakses data di penyimpanan objek cloud menggunakan URI. Lihat Mengelola lokasi eksternal, tabel eksternal, dan volume 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 Tidak didukung
Databricks REST API Tidak didukung
Perintah shell Bash Tidak didukung
Penginstalan pustaka %pip install abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/library.whl
Pandas Tidak didukung
OSS Python Tidak didukung

Catatan

Penyimpanan objek cloud tidak mendukung passthrough kredensial.

Bekerja dengan file di pemasangan DBFS dan akar DBFS

Pemasangan DBFS tidak dapat diamankan menggunakan Unity Catalog dan tidak lagi direkomendasikan oleh Databricks. Data yang disimpan di akar DBFS dapat diakses oleh semua pengguna di ruang kerja. Databricks merekomendasikan untuk tidak menyimpan kode atau data sensitif atau produksi apa pun di akar DBFS. Lihat Apa itu DBFS?.

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 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
Penginstalan pustaka %pip install /dbfs/mnt/path/to/my_library.whl
Pandas df = pd.read_csv('/dbfs/mnt/path/to/data.csv')
OSS Python os.listdir('/dbfs/mnt/path/to/directory')

Catatan

dbfs:/ Skema 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 Tidak didukung
Databricks REST API Tidak didukung
Perintah shell Bash %sh curl http://<address>/text.zip > /tmp/text.zip
Penginstalan pustaka Tidak didukung
Pandas df = pd.read_csv('/path/to/data.csv')
OSS Python os.listdir('/path/to/directory')

Catatan

file:/ Skema 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.