Sdílet prostřednictvím


FileStore

Důležité

Tato dokumentace byla vyřazena a nemusí být aktualizována. Produkty, služby nebo technologie uvedené v tomto obsahu se už nepodporují.

FileStore je speciální složka v DBFS, kde můžete ukládat soubory a mít je přístupné pro váš webový prohlížeč. FileStore můžete použít k:

  • Při volání displayHTMLmůžete ukládat soubory, jako jsou obrázky a knihovny, které jsou přístupné v html a JavaScriptu.
  • Uložte výstupní soubory, které chcete stáhnout do místní plochy.
  • Nahrajte sdílené svazky clusteru a další datové soubory z místní plochy, abyste mohli zpracovávat data v Databricks.

Když používáte určité funkce, Azure Databricks umístí soubory do následujících složek do FileStore:

  • /FileStore/jars – obsahuje nahrané starší knihovny pracovních prostorů. Pokud odstraníte soubory v této složce, knihovny, které odkazují na tyto soubory ve vašem pracovním prostoru, už nemusí fungovat.
  • /FileStore/tables – obsahuje soubory, které importujete pomocí uživatelského rozhraní. Pokud odstraníte soubory v této složce, tabulky, které jste z těchto souborů vytvořili, už nemusí být přístupné.

Důležité

Knihovny je možné nainstalovat z DBFS při použití Databricks Runtime 14.3 LTS a níže. Každý uživatel pracovního prostoru ale může upravovat soubory knihovny uložené v DBFS. Aby se zlepšilo zabezpečení knihoven v pracovním prostoru Azure Databricks, ukládání souborů knihovny v kořenovém adresáři DBFS je ve výchozím nastavení v Databricks Runtime 15.1 a novějších zakázaných. Viz Ukládání knihoven v kořenovém adresáři DBFS je ve výchozím nastavení zastaralé a zakázané.

Místo toho databricks doporučuje nahrát všechny knihovny, včetně knihoven Pythonu, souborů JAR a konektorů Spark, do souborů pracovních prostorů nebo svazků katalogu Unity nebo pomocí úložišť balíčků knihoven. Pokud vaše úloha tyto vzory nepodporuje, můžete také použít knihovny uložené v cloudovém úložišti objektů.

Uložení souboru do FileStore

Můžete použít dbutils.fs.put k zápisu libovolných textových souborů do /FileStore adresáře v 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")

V následujícím příkladu nahraďte <databricks-instance> adresou URL pracovního prostoru vašeho nasazení Azure Databricks.

Soubory uložené ve /FileStore webovém prohlížeči jsou přístupné na adrese https://<databricks-instance>/files/<path-to-file>?o=######. Například soubor, ve /FileStore/my-stuff/my-file.txt kterém jste uložili, je přístupný tam, kde https://<databricks-instance>/files/my-stuff/my-file.txt?o=###### je číslo stejné o= jako v adrese URL.

Poznámka:

K vložení souborů do /FileStore adresáře můžete použít také rozhraní pro nahrání souborů DBFS. Viz Prozkoumání a vytváření tabulek v DBFS.

Vložení statických obrázků do poznámkových bloků

Umístění můžete použít files/ k vložení statických obrázků do poznámkových bloků:

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

nebo syntaxe importu obrázku Markdownu:

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

Statické obrázky můžete nahrát pomocí rozhraní DBFS API a požadavků knihovny HTTP Pythonu. V následujícím příkladu:

  • Nahraďte <databricks-instance> adresou URL pracovního prostoru vašeho nasazení Azure Databricks.
  • Nahraďte <token> hodnotou vašeho osobního přístupového tokenu.
  • Nahraďte <image-dir> umístěním, ve FileStore kterém chcete nahrát soubory obrázků.

Poznámka:

Osvědčeným postupem při ověřování pomocí automatizovaných nástrojů, systémů, skriptů a aplikací doporučuje Databricks místo uživatelů pracovního prostoru používat tokeny patního přístupu, které patří instančním objektům . Pokud chcete vytvořit tokeny pro instanční objekty, přečtěte si téma Správa tokenů instančního objektu.

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)

Škálování statických obrázků

Pokud chcete velikost obrázku, který jste uložili do dbFS, škálovat, zkopírujte obrázek /FileStore a změňte jeho velikost pomocí parametrů obrázku v 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;">''')

Příklad poznámkového bloku: Použití javascriptové knihovny

Tento poznámkový blok ukazuje, jak pomocí FileStore obsahovat javascriptovou knihovnu.

Ukázkový poznámkový blok DBFS FileStore

Získat poznámkový blok