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