共用方式為


FileStore

重要

此文件已淘汰,且可能未更新。 不再支援此內容所提及的產品、服務或技術。

FileStore 是 DBFS 中的特殊資料夾,where 您可以儲存盤案,並讓檔案可供網頁瀏覽器存取。 您可以使用 FileStore:

  • 當您呼叫 displayHTML 時,儲存檔案,例如映像檔及程式庫可在 HTML 和 JavaScript 存取。
  • 儲存您要下載到本機桌面的輸出檔案。
  • 從本機桌面上傳 CSV 及其他資料檔案,以在 Databricks 進行處理。

當您使用特定功能時,Azure Databricks 會將檔案放在 FileStore 底下的下列資料夾:

  • /FileStore/jars - 包含上傳的舊版工作區程式庫。 如果您刪除此資料夾的檔案,則在工作區參考這些檔案的程式庫可能無法再運作。
  • /FileStore/tables - 包含您使用 UI 匯入的檔案。 如果您刪除此資料夾中的檔案,您從這些檔案建立的tables檔案可能無法再存取。

重要

使用 Databricks Runtime 14.3 LTS 及更舊版本時,可從 DBFS 安裝程式庫。 不過,任何工作區使用者都可以修改儲存在 DBFS 的程式庫檔案。 若要提高 Azure Databricks 工作區程式庫的安全性,在 Databricks Runtime 15.1 和更新版本預設會取代及停用 DBFS 根目錄中的程式庫檔案。 請參閱在 DBFS 根目錄儲存程式庫已被取代,並預設為停用

相反地,Databricks 建議 將所有函式庫,包括 Python 函式庫、JAR 檔案和 Spark 連接器,上傳到工作區檔案、Unity Catalogvolumes,或使用函式庫套件存放庫。 如果您的工作負載不支援這些模式,您也可以使用儲存在雲端物件記憶體的程式庫。

將檔案儲存至 FileStore

您可以使用dbutils.fs.put將任意文字檔/FileStore寫入 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")

在下面,將 <databricks-instance> 替換為 Azure Databricks 部署的工作區 URL

儲存在 /FileStore 的檔案可透過您的網頁瀏覽器 https://<databricks-instance>/files/<path-to-file>?o=###### 存取。 例如,您在 /FileStore/my-stuff/my-file.txt 中儲存的檔案可以在 https://<databricks-instance>/files/my-stuff/my-file.txt?o=######where 存取,o= 後的數字與您的 URL 中的相同。

注意

您也可以使用 DBFS 檔案上傳介面將檔案放入 /FileStore 目錄。 請參閱 在 DBFS中探索和建立 tables。

在筆記本嵌入靜態映像檔

您可使用 files/ 位置將靜態映像檔嵌入筆記本:

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

或 Markdown 映像檔匯入語法:

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

使用 Markdown 的範例

例如,假設您在 FileStore 中有 Databricks 標誌圖像檔:

dbfs ls dbfs:/FileStore/
databricks-logo-mobile.png

當您在 Markdown 儲存格中包含下列程式碼時,圖片會在儲存格中顯示:

Markdown 儲存格中的 Image

呈現的範例:

渲染的影像

使用 DBFS API 和要求 Python HTTP 連結庫的範例

您可以使用 DBFS API請求 Python HTTP 程式庫來上傳靜態映像檔。 在以下範例中:

  • <databricks-instance> 替換為 Azure Databricks 部署的工作區 URL
  • <token> 替換為您的個人存取權杖的值。
  • <image-dir> 取代為您想要上傳圖像檔案 FileStorewhere 中的位置。

注意

作為安全性最佳做法,當您使用自動化工具、系統、指令碼和應用程式進行驗證時,Databricks 建議您使用屬於服務主體的個人存取權杖,而不是工作區使用者。 若要建立服務主體權杖,請參閱管理服務主體的權杖

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)

調整靜態映像檔

若要調整已儲存至 DBFS 的映像大小,請將映射複製到 /FileStore,然後在 displayHTML中使用影像 parameters 重設大小:

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;">''')

筆記本範例:使用 JavaScript 程式庫

此筆記本示範如何使用 FileStore 來包含 JavaScript 程式庫。

DBFS FileStore 範例筆記本

Get 筆記本