FileStore
Cette documentation a été retirée et pourrait ne pas être mise à jour. Les produits, services ou technologies mentionnés dans ce contenu ne sont plus pris en charge.
FileStore est un dossier spécial au sein de DBFS où vous pouvez enregistrer des fichiers et les rendre accessibles à votre navigateur web. Vous pouvez utiliser FileStore pour :
- Enregistrez les fichiers, tels que les images et les bibliothèques, qui sont accessibles dans HTML et JavaScript lorsque vous appelez
displayHTML. - Enregistrez les fichiers de sortie que vous souhaitez download sur votre ordinateur de bureau local.
- Upload des fichiers CSV et d'autres fichiers de données depuis votre ordinateur local pour les traiter sur Databricks.
Lorsque vous utilisez certaines fonctionnalités, Databricks place les fichiers dans les dossiers suivants sous FileStore :
/FileStore/jars- contient des anciennes bibliothèques Workspace upload. Si vous supprimez des fichiers dans ce dossier, les bibliothèques qui référencent ces fichiers dans votre workspace risquent de ne plus fonctionner./FileStore/tables- contient les fichiers que vous importez à l'aide de l'interface utilisateur. Si vous supprimez des fichiers dans ce dossier, les tables que vous avez créées à partir de ces fichiers pourraient ne plus être accessibles.
Les bibliothèques peuvent être installées à partir de DBFS lors de l’utilisation de Databricks Runtime 14.3 LTS et versions antérieures. Cependant, tout utilisateur de Workspace peut modifier les fichiers de bibliothèque stockés dans DBFS. Pour améliorer la sécurité des bibliothèques dans un Workspace Databricks, le stockage des fichiers de bibliothèque dans la racine DBFS est obsolète et désactivé par default dans Databricks Runtime 15.1 et versions ultérieures. Consultez Le stockage des bibliothèques dans la racine DBFS est déprécié et désactivé par default.
Au lieu de cela, Databricks recommande d’upload toutes les bibliothèques, y compris les bibliothèques Python, les fichiers JAR et les connecteurs Spark, dans les fichiers Workspace ou les volumes Unity Catalog, ou d’utiliser les repositories de packages de bibliothèques. Si votre charge de travail ne prend pas en charge ces modèles, vous pouvez également utiliser des bibliothèques stockées dans le stockage objet cloud.
Enregistrer un fichier dans FileStore
Vous pouvez utiliser dbutils.fs.put pour écrire des fichiers texte arbitraires dans le répertoire /FileStore dans 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")
Dans ce qui suit, remplacez <databricks-instance> par l'URL du Workspace de votre déploiement Databricks.
Les fichiers stockés dans /FileStore sont accessibles dans votre navigateur web à https://<databricks-instance>/files/. Par exemple, le fichier que vous avez stocké dans /FileStore/my-stuff/my-file.txt est accessible via https://<databricks-instance>/files/my-stuff/my-file.txt.
Cependant, s'il y a ?o= dans l'URL de déploiement, par exemple, https://<databricks-instance>/?o=6280049833385130, remplacez https://<databricks-instance>/files/my-stuff/my-file.txt par https://<databricks-instance>/files/my-stuff/my-file.txt?o=###### où le nombre après o= est le même que dans votre URL.
Vous pouvez également utiliser les interfaces d’upload de fichiers DBFS pour placer des fichiers dans le répertoire /FileStore. Consultez Explorer et créer des tables dans DBFS.
Intégrer des images statiques dans les Notebooks
Vous pouvez utiliser l'emplacement files/ pour intégrer des images statiques dans vos notebooks :
displayHTML("<img src ='files/image.jpg'>")
ou syntaxe d'importation d'image Markdown :
%md

Exemple utilisant Markdown
Par exemple, supposons que vous ayez le fichier image du logo Databricks dans FileStore :
dbfs ls dbfs:/FileStore/
databricks-logo-mobile.png
Lorsque vous incluez le code suivant dans une cellule Markdown, l'image est rendue dans la cellule :
Exemple rendu :
Exemple d'utilisation de l'API DBFS et de la bibliothèque HTTP Python requests
Vous pouvez upload des images statiques à l'aide de l'API DBFS et de la bibliothèque HTTP requests Python. Dans l'exemple suivant :
- Remplacez
<databricks-instance>par l'URL de Workspace de votre déploiement Databricks. - Remplacez
<token>par la valeur de votre jeton d'accès personnel. - Remplacez
<image-dir>par l'emplacement dansFileStoreoù vous voulez upload les fichiers image.
En tant que bonne pratique de sécurité lorsque vous vous authentifiez avec des outils, des systèmes, des scripts et des applications automatisés, Databricks vous recommande d'utiliser des jetons OAuth.
Si vous utilisez l'authentification par jeton d'accès personnel, Databricks recommande d'utiliser des jetons d'accès personnels appartenant aux Service Principal plutôt qu'aux utilisateurs du Workspace. Pour créer des jetons pour les Service Principals, consultez Gérer les jetons pour un Service Principal.
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)
Mettre à l'échelle des images statiques
Pour redimensionner une image que vous avez enregistrée dans DBFS, copiez l'image dans /FileStore, puis redimensionnez-la à l'aide des paramètres d'image dans 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;">''')
Exemple de Notebook : Utilisation d'une bibliothèque JavaScript
Ce Notebook montre comment utiliser FileStore pour contenir une bibliothèque JavaScript.