FileStore

FileStore to specjalny folder w systemie plików Databricks (DBFS), w którym można zapisywać pliki i mieć je dostępne w przeglądarce internetowej. Możesz użyć funkcji FileStore do:

  • Zapisz pliki, takie jak obrazy i biblioteki, które są dostępne w językach HTML i JavaScript podczas wywoływania metody displayHTML.
  • Zapisz pliki wyjściowe, które chcesz pobrać na komputer lokalny.
  • Przekaż woluminy CSV i inne pliki danych z pulpitu lokalnego do przetworzenia na Databricks.

W przypadku korzystania z niektórych funkcji usługa Azure Databricks umieszcza pliki w następujących folderach w obszarze FileStore:

  • /FileStore/jars — zawiera przekazane biblioteki. Jeśli usuniesz pliki w tym folderze, biblioteki odwołujące się do tych plików w obszarze roboczym mogą przestać działać.
  • /FileStore/tables — zawiera pliki importowane przy użyciu interfejsu użytkownika. Jeśli usuniesz pliki w tym folderze, tabele utworzone na podstawie tych plików mogą nie być już dostępne.
  • /FileStore/plots — zawiera obrazy utworzone w notesach podczas wywoływania display() obiektu wykresu języka Python lub R, takich jak ggplot lub matplotlib wykres. W przypadku usunięcia plików w tym folderze może być konieczne ponowne wygenerowanie tych wykresów w notesach odwołujących się do nich. Aby uzyskać więcej informacji, zobacz Biblioteki Matplotlib i ggplot2.
  • /FileStore/import-stage— zawiera pliki tymczasowe utworzone podczas importowania notesów lub Databricks plików archiwów. Te pliki tymczasowe znikają po zakończeniu importowania notesu.

Zapisywanie pliku w magazynie plików

Aby zapisać plik w magazynie plików, umieść go w katalogu w systemie /FileStore plików DBFS:

dbutils.fs.put("/FileStore/my-stuff/my-file.txt", "Contents of my file")

W poniższym miejscu zastąp <databricks-instance>element adresem URL obszaru roboczego wdrożenia usługi Azure Databricks.

Pliki przechowywane w /FileStore programie są dostępne w przeglądarce internetowej pod adresem https://<databricks-instance>/files/<path-to-file>?o=######. Na przykład plik przechowywany w pliku /FileStore/my-stuff/my-file.txt jest dostępny w lokalizacji, w https://<databricks-instance>/files/my-stuff/my-file.txt?o=###### której liczba po o= jest taka sama jak w adresie URL.

Uwaga

Można również użyć interfejsów przekazywania plików DBFS, aby umieścić pliki w /FileStore katalogu. Zobacz Databricks interfejsu wiersza polecenia.

Osadzanie obrazów statycznych w notesach

Lokalizację files/ można użyć do osadzania obrazów statycznych w notesach:

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

lub składnia importu obrazów markdown:

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

Obrazy statyczne można przekazywać przy użyciu dokumentacji interfejsu API REST systemu plików DBFS Databricks i żądań biblioteki HTTP języka Python. W poniższym przykładzie:

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)

Skalowanie obrazów statycznych

Aby skalować rozmiar obrazu zapisanego w systemie plików DBFS, skopiuj obraz do /FileStore pliku , a następnie zmień rozmiar przy użyciu parametrów obrazu w pliku 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;">''')

Korzystanie z biblioteki Języka JavaScript

W tym notesie pokazano, jak używać funkcji FileStore do przechowywania biblioteki Języka JavaScript.

Notes demonstracyjny magazynu plików

Pobierz notes