Delen via


FileStore

Belangrijk

Deze documentatie is buiten gebruik gesteld en wordt mogelijk niet bijgewerkt. De producten, services of technologieën die in deze inhoud worden genoemd, worden niet meer ondersteund.

FileStore is een speciale map in DBFS waar u bestanden kunt opslaan en toegankelijk kunt maken voor uw webbrowser. U kunt FileStore gebruiken om het volgende te doen:

  • Sla bestanden, zoals afbeeldingen en bibliotheken, op die toegankelijk zijn in HTML en JavaScript wanneer u aanroept displayHTML.
  • Sla uitvoerbestanden op die u wilt downloaden naar uw lokale bureaublad.
  • Upload CSV's en andere gegevensbestanden vanaf uw lokale bureaublad om te verwerken op Databricks.

Wanneer u bepaalde functies gebruikt, plaatst Azure Databricks bestanden in de volgende mappen onder FileStore:

  • /FileStore/jars - bevat geüploade verouderde werkruimtebibliotheken. Als u bestanden in deze map verwijdert, werken bibliotheken die naar deze bestanden in uw werkruimte verwijzen mogelijk niet meer.
  • /FileStore/tables - bevat de bestanden die u importeert met behulp van de gebruikersinterface. Als u bestanden in deze map verwijdert, zijn tabellen die u hebt gemaakt op basis van deze bestanden mogelijk niet meer toegankelijk.

Belangrijk

Bibliotheken kunnen worden geïnstalleerd vanuit DBFS wanneer u Databricks Runtime 14.3 LTS en hieronder gebruikt. Elke werkruimtegebruiker kan echter bibliotheekbestanden wijzigen die zijn opgeslagen in DBFS. Om de beveiliging van bibliotheken in een Azure Databricks-werkruimte te verbeteren, wordt het opslaan van bibliotheekbestanden in de DBFS-hoofdmap afgeschaft en standaard uitgeschakeld in Databricks Runtime 15.0 en hoger. Zie Opslaan van bibliotheken in dbFS-hoofdmap is afgeschaft en standaard uitgeschakeld.

In plaats daarvan raadt Databricks aan om alle bibliotheken, waaronder Python-bibliotheken, JAR-bestanden en Spark-connectors, te uploaden naar werkruimtebestanden of Unity Catalog-volumes, of om opslagplaatsen van bibliotheekpakketten te gebruiken. Als uw workload deze patronen niet ondersteunt, kunt u ook bibliotheken gebruiken die zijn opgeslagen in de opslag van cloudobjecten.

Een bestand opslaan in FileStore

U kunt willekeurige dbutils.fs.put tekstbestanden schrijven naar de /FileStore map in 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")

Vervang in het volgende de <databricks-instance>werkruimte-URL van uw Azure Databricks-implementatie.

Bestanden die zijn opgeslagen /FileStore in zijn toegankelijk in uw webbrowser op https://<databricks-instance>/files/<path-to-file>?o=######. Het bestand waarin u hebt opgeslagen /FileStore/my-stuff/my-file.txt , is bijvoorbeeld toegankelijk op https://<databricks-instance>/files/my-stuff/my-file.txt?o=###### de plaats waar het nummer erna o= hetzelfde is als in uw URL.

Notitie

U kunt ook de DBFS-bestandsuploadinterfaces gebruiken om bestanden in de /FileStore map te plaatsen. Zie Tabellen verkennen en maken in DBFS.

Statische afbeeldingen insluiten in notebooks

U kunt de files/ locatie gebruiken om statische afbeeldingen in uw notitieblokken in te sluiten:

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

of importsyntaxis van Markdown-installatiekopieën:

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

U kunt statische afbeeldingen uploaden met behulp van de DBFS-API en de Python HTTP-bibliotheek aanvragen . In het volgende voorbeeld:

  • Vervang door <databricks-instance> de werkruimte-URL van uw Azure Databricks-implementatie.
  • Vervang <token> door de waarde van uw persoonlijke toegangstoken.
  • Vervang <image-dir> door de locatie waar FileStore u de afbeeldingsbestanden wilt uploaden.

Notitie

Als best practice voor beveiliging, wanneer u zich verifieert met geautomatiseerde hulpprogramma's, systemen, scripts en apps, raadt Databricks u aan om persoonlijke toegangstokens te gebruiken die behoren tot service-principals in plaats van werkruimtegebruikers. Zie Tokens voor een service-principal beheren om tokens voor service-principals te maken.

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)

Statische afbeeldingen schalen

Als u de grootte van een afbeelding wilt schalen die u hebt opgeslagen in DBFS, kopieert u de installatiekopie naar /FileStore en wijzigt u vervolgens het formaat met behulp van afbeeldingsparameters in 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;">''')

Notebook-voorbeeld: Een JavaScript-bibliotheek gebruiken

In dit notebook ziet u hoe u FileStore gebruikt om een JavaScript-bibliotheek te bevatten.

DbFS FileStore-voorbeeldnotitieblok

Notebook downloaden