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 standaard afgeschaft en uitgeschakeld in Databricks Runtime 15.1 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 waarFileStore
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.