Bagikan melalui


FileStore

Penting

Dokumentasi ini telah dihentikan dan mungkin tidak diperbarui. Produk, layanan, atau teknologi yang disebutkan dalam konten ini tidak lagi didukung.

FileStore adalah folder khusus dalam DBFS tempat Anda dapat menyimpan file dan membuatnya dapat diakses oleh browser web Anda. Anda dapat menggunakan FileStore untuk:

  • Simpan file, seperti citra dan pustaka, yang dapat diakses dalam HTML dan JavaScript saat Anda memanggil displayHTML.
  • Simpan file output yang ingin diunduh ke desktop lokal Anda.
  • Unggah CV dan file data lainnya dari desktop lokal untuk diproses di Databricks.

Saat Anda menggunakan fitur tertentu, Azure Databricks menempatkan file di folder berikut di bawah FileStore:

  • /FileStore/jars - berisi pustaka ruang kerja warisan yang diunggah. Jika Anda menghapus file di folder ini, pustaka yang mereferensikan file ini di ruang kerja mungkin tidak lagi berfungsi.
  • /FileStore/tables - berisi file yang Anda impor menggunakan UI. Jika Anda menghapus file di folder ini, tabel yang dibuat dari file-file ini mungkin tidak lagi dapat diakses.

Penting

Pustaka dapat diinstal dari DBFS saat menggunakan Databricks Runtime 14.3 LTS dan di bawahnya. Namun, setiap pengguna ruang kerja dapat memodifikasi file pustaka yang disimpan di DBFS. Untuk meningkatkan keamanan pustaka di ruang kerja Azure Databricks, menyimpan file pustaka di akar DBFS tidak digunakan lagi dan dinonaktifkan secara default di Databricks Runtime 15.1 ke atas. Lihat Menyimpan pustaka di akar DBFS tidak digunakan lagi dan dinonaktifkan secara default.

Sebagai gantinya, Databricks merekomendasikan untuk mengunggah semua pustaka, termasuk pustaka Python, file JAR, dan konektor Spark, ke file ruang kerja atau volume Katalog Unity, atau menggunakan repositori paket pustaka. Jika beban kerja Anda tidak mendukung pola ini, Anda juga dapat menggunakan pustaka yang disimpan di penyimpanan objek cloud.

Menyimpan file ke FileStore

Anda dapat menggunakan dbutils.fs.put untuk menulis file teks arbitrer ke /FileStore direktori di DBFS:

dbutils.fs.put("/FileStore/my-stuff/my-file.txt", "This is the actual text that will be saved to disk. Like a 'Hello world!' example")

Di contoh berikut, ganti <databricks-instance> dengan URL ruang kerja penyebaran Azure Databricks Anda.

File yang disimpan di /FileStore dapat diakses di browser web Anda di https://<databricks-instance>/files/<path-to-file>?o=######. Misalnya, file tempat Anda menyimpan /FileStore/my-stuff/my-file.txt dapat diakses di https://<databricks-instance>/files/my-stuff/my-file.txt?o=###### tempat nomor setelah o= sama dengan di URL Anda.

Catatan

Anda juga dapat menggunakan antarmuka unggah file DBFS untuk memasukkan file ke dalam direktori /FileStore. Lihat Menjelajahi dan membuat tabel di DBFS.

Citra statik yang disematkan di notebook

Anda dapat menggunakan lokasi files/ untuk menyematkan citra statik ke dalam notebook Anda:

displayHTML("<img src ='files/image.jpg'>")

atau Markdown sintaksis impor citra:

%md
![my_test_image](files/image.jpg)

Anda dapat mengunggah gambar statis menggunakan API DBFS dan pustaka HTTP Python permintaan . Dalam contoh berikut:

  • Ganti <databricks-instance> dengan URL ruang kerja penyebaran Azure Databricks Anda.
  • Ganti <token> dengan nilai token akses pribadi Anda.
  • Ganti <image-dir> dengan lokasi di FileStore tempat Anda ingin mengunggah file citra.

Catatan

Sebagai praktik terbaik keamanan, saat Anda mengautentikasi dengan alat, sistem, skrip, dan aplikasi otomatis, Databricks merekomendasikan agar Anda menggunakan token akses pribadi milik perwakilan layanan, bukan pengguna ruang kerja. Untuk membuat token untuk perwakilan layanan, lihat Mengelola token untuk perwakilan layanan.

import requests
import json
import os

TOKEN = '<token>'
headers = {'Authorization': 'Bearer %s' % TOKEN}
url = "https://<databricks-instance>/api/2.0"
dbfs_dir = "dbfs:/FileStore/<image-dir>/"

def perform_query(path, headers, data={}):
  session = requests.Session()
  resp = session.request('POST', url + path, data=json.dumps(data), verify=True, headers=headers)
  return resp.json()

def mkdirs(path, headers):
  _data = {}
  _data['path'] = path
  return perform_query('/dbfs/mkdirs', headers=headers, data=_data)

def create(path, overwrite, headers):
  _data = {}
  _data['path'] = path
  _data['overwrite'] = overwrite
  return perform_query('/dbfs/create', headers=headers, data=_data)

def add_block(handle, data, headers):
  _data = {}
  _data['handle'] = handle
  _data['data'] = data
  return perform_query('/dbfs/add-block', headers=headers, data=_data)

def close(handle, headers):
  _data = {}
  _data['handle'] = handle
  return perform_query('/dbfs/close', headers=headers, data=_data)

def put_file(src_path, dbfs_path, overwrite, headers):
  handle = create(dbfs_path, overwrite, headers=headers)['handle']
  print("Putting file: " + dbfs_path)
  with open(src_path, 'rb') as local_file:
    while True:
      contents = local_file.read(2**20)
      if len(contents) == 0:
        break
      add_block(handle, b64encode(contents).decode(), headers=headers)
    close(handle, headers=headers)

mkdirs(path=dbfs_dir, headers=headers)
files = [f for f in os.listdir('.') if os.path.isfile(f)]
for f in files:
  if ".png" in f:
    target_path = dbfs_dir + f
    resp = put_file(src_path=f, dbfs_path=target_path, overwrite=True, headers=headers)
    if resp == None:
      print("Success")
    else:
      print(resp)

Menskalakan citra statik

Untuk menskalakan ukuran citra yang telah disimpan ke DBFS, salin citra ke /FileStore, lalu ubah ukuran menggunakan parameter citra di displayHTML:

dbutils.fs.cp('dbfs:/user/experimental/MyImage-1.png','dbfs:/FileStore/images/')
displayHTML('''<img src="files/images/MyImage-1.png" style="width:600px;height:600px;">''')

Contoh buku catatan: Menggunakan pustaka JavaScript

Notebook ini menunjukkan cara menggunakan FileStore agar berisi pustaka JavaScript.

Buku catatan contoh FileStore DBFS

Dapatkan buku catatan