Udostępnij za pośrednictwem


FileStore

Ważne

Ta dokumentacja została wycofana i może nie zostać zaktualizowana. Produkty, usługi lub technologie wymienione w tej zawartości nie są już obsługiwane.

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

  • 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 pulpit lokalny.
  • Przekaż pliki CSV i inne pliki danych z pulpitu lokalnego do przetworzenia w usłudze 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 starsze biblioteki obszarów roboczych. 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.

Ważne

Biblioteki można instalować z systemu plików DBFS podczas korzystania z środowiska Databricks Runtime 14.3 LTS i poniżej. Jednak każdy użytkownik obszaru roboczego może modyfikować pliki biblioteki przechowywane w systemie plików DBFS. Aby zwiększyć bezpieczeństwo bibliotek w obszarze roboczym usługi Azure Databricks, przechowywanie plików bibliotek w katalogu głównym systemu plików DBFS jest domyślnie przestarzałe i wyłączone w środowisku Databricks Runtime 15.1 lub nowszym. Zobacz Przechowywanie bibliotek w katalogu głównym systemu plików DBFS jest domyślnie przestarzałe i wyłączone.

Zamiast tego usługa Databricks zaleca przekazywanie wszystkich bibliotek, w tym bibliotek języka Python, plików JAR i łączników platformy Spark, do plików obszaru roboczego lub woluminów wykazu aparatu Unity lub przy użyciu repozytoriów pakietów biblioteki. Jeśli obciążenie nie obsługuje tych wzorców, możesz również użyć bibliotek przechowywanych w magazynie obiektów w chmurze.

Zapisywanie pliku w magazynie plików

Za pomocą dbutils.fs.put polecenia można zapisywać dowolne pliki tekstowe w katalogu w systemie /FileStore plików 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")

W poniższej sekcji zastąp <databricks-instance> ciąg 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 pod adresem, w https://<databricks-instance>/files/my-stuff/my-file.txt?o=###### którym liczba po o= jest taka sama jak w adresie URL.

Uwaga

Możesz również użyć interfejsów przekazywania plików DBFS, aby umieścić pliki w /FileStore katalogu. Zobacz Eksplorowanie i tworzenie tabel w systemie plików DBFS.

Osadzanie obrazów statycznych w notesach

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

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

lub składnia importowania obrazów markdown:

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

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

  • Zastąp ciąg <databricks-instance> adresem URL obszaru roboczego wdrożenia usługi Azure Databricks.
  • Zastąp <token> ciąg wartością osobistego tokenu dostępu.
  • Zastąp <image-dir> element lokalizacją, w FileStore której chcesz przekazać pliki obrazów.

Uwaga

Najlepszym rozwiązaniem w zakresie zabezpieczeń w przypadku uwierzytelniania za pomocą zautomatyzowanych narzędzi, systemów, skryptów i aplikacji usługa Databricks zaleca używanie osobistych tokenów dostępu należących do jednostek usługi zamiast użytkowników obszaru roboczego. Aby utworzyć tokeny dla jednostek usługi, zobacz Zarządzanie tokenami dla jednostki usługi.

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

Przykład notesu: używanie biblioteki Języka JavaScript

W tym notesie pokazano, jak używać magazynu plików do przechowywania biblioteki JavaScript.

Przykładowy notes dbFS FileStore

Pobierz notes