FileStore
Wichtig
Diese Dokumentation wurde eingestellt und wird unter Umständen nicht aktualisiert. Die in diesem Inhalt erwähnten Produkte, Dienste oder Technologien werden nicht mehr unterstützt.
FileStore ist ein spezieller Ordner innerhalb von DBFS, in dem Sie Dateien speichern und über Ihren Webbrowser zugänglich machen können. Sie können FileStore für Folgendes verwenden:
- Speichern von Dateien, wie z. B. Bildern und Bibliotheken, auf die in HTML und JavaScript zugegriffen werden kann, wenn Sie
displayHTML
aufrufen - Speichern von Ausgabedateien, die Sie auf Ihren lokalen Desktop herunterladen möchten
- Hochladen von CSV- und andere Datendateien von Ihrem lokalen Desktop zur Verarbeitung in Databricks
Wenn Sie bestimmte Features verwenden, legt Azure Databricks Dateien in den folgenden Ordnern unter FileStore ab:
/FileStore/jars
- enthält hochgeladene Legacyarbeitsbereichsbibliotheken. Wenn Sie Dateien in diesem Ordner löschen, funktionieren Bibliotheken, die auf diese Dateien in Ihrem Arbeitsbereich verweisen, möglicherweise nicht mehr./FileStore/tables
: enthält die Dateien, die Sie über die Benutzeroberfläche importieren. Wenn Sie Dateien in diesem Ordner löschen, kann es sein, dass auf Tabellen, die Sie anhand dieser Dateien erstellt haben, nicht mehr zugegriffen werden kann.
Wichtig
Bei Verwendung von Databricks Runtime 14.3 LTS und niedriger können Bibliotheken über DBFS installiert werden. Arbeitsbereichsbenutzer und -benutzerinnen können jedoch Bibliotheksdateien ändern, die in DBFS gespeichert sind. Um die Sicherheit von Bibliotheken in einem Azure Databricks-Arbeitsbereich zu verbessern, wurde das Speichern von Bibliotheksdateien im DBFS-Stamm eingestellt und ist in Databricks Runtime 15.1 und höher standardmäßig deaktiviert. Weitere Informationen finden Sie unter Das Speichern von Bibliotheken im DBFS-Stamm ist veraltet und standardmäßig deaktiviert.
Stattdessen empfiehlt Databricks, alle Bibliotheken (einschließlich Python-Bibliotheken, JAR-Dateien und Spark-Connectors) in Arbeitsbereichsdateien oder auf Unity Catalog-Volumes hochzuladen oder Bibliothekspaketrepositorys zu verwenden. Wenn Ihre Workload diese Muster nicht unterstützt, können Sie auch Bibliotheken verwenden, die im Cloudobjektspeicher gespeichert sind.
Speichern einer Datei in FileStore
Sie können dbutils.fs.put
verwenden, um beliebige Textdateien in das /FileStore
-Verzeichnis in DBFS zu schreiben:
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")
Ersetzen Sie in den folgenden Beispielen <databricks-instance>
durch die Arbeitsbereichs-URL Ihrer Azure Databricks-Bereitstellung.
Auf die in /FileStore
gespeicherten Dateien können Sie über Ihren Webbrowser unter https://<databricks-instance>/files/<path-to-file>?o=######
zugreifen. Zum Beispiel ist der Zugriff auf die Datei, die Sie in /FileStore/my-stuff/my-file.txt
gespeichert haben, unter https://<databricks-instance>/files/my-stuff/my-file.txt?o=######
möglich, wobei die Zahl nach o=
die gleiche ist wie in Ihrer URL.
Hinweis
Sie können auch die DBFS-Schnittstellen zum Hochladen von Dateien verwenden, um Dateien im Verzeichnis /FileStore
zu speichern. Weitere Informationen finden Sie unter Erkunden und Erstellen von Tabellen in DBFS.
Einbetten statischer Bilder in Notebooks
Sie können den Speicherort files/
verwenden, um statische Bilder in Ihre Notebooks einzubetten:
displayHTML("<img src ='files/image.jpg'>")
oder Markdown-Syntax zum Importieren von Bildern:
%md
![my_test_image](files/image.jpg)
Sie können statische Bilder hochladen, indem Sie die DBFS-API und die Python-HTTP-Bibliothek requests verwenden. Siehe folgendes Beispiel:
- Ersetzen Sie
<databricks-instance>
durch die Arbeitsbereichs-URL Ihrer Azure Databricks-Bereitstellung. - Ersetzen Sie
<token>
durch den Wert Ihres persönlichen Zugriffstokens. - Ersetzen Sie
<image-dir>
durch den Speicherort inFileStore
, in den Sie die Bilder hochladen möchten.
Hinweis
Als bewährte Methode für die Sicherheit empfiehlt Databricks, dass Sie bei der Authentifizierung mit automatisierten Tools, Systemen, Skripten und Anwendungen persönliche Zugriffstoken verwenden, die zu Dienstprinzipalen und nicht zu Benutzern des Arbeitsbereichs gehören. Informationen zum Erstellen von Token für Dienstprinzipale finden Sie unter Verwalten von Token für einen Dienstprinzipal.
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)
Skalieren statischer Bilder
Um die Größe eines im DBFS gespeicherten Bilds zu skalieren, kopieren Sie das Bild in /FileStore
, und ändern dann die Größe mithilfe der Bildparameter 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;">''')
Notebookbeispiel: Verwenden einer JavaScript-Bibliothek
Dieses Notebook zeigt, wie Sie FileStore so einsetzen, dass eine JavaScript-Bibliothek enthalten ist.