FileStore
Importante
Esta documentación se ha retirado y es posible que no se actualice. Los productos, servicios o tecnologías mencionados en este contenido ya no se admiten.
FileStore es una carpeta especial dentro de DBFS en la que puede guardar archivos y permitir que el explorador web pueda acceder a ellos. Puede usar FileStore para:
- Guardar archivos, como imágenes y bibliotecas, a los que se puede acceder en HTML y JavaScript al llamar a
displayHTML
. - Guardar en el dispositivo de escritorio local los archivos de salida que desea descargar.
- Cargar archivos CSV y otros archivos de datos desde el dispositivo de escritorio local para procesarlos en Databricks.
Cuando se usan determinadas características, Azure Databricks coloca los archivos en las carpetas siguientes en FileStore:
/FileStore/jars
: contiene bibliotecas de áreas de trabajo heredadas cargadas. Si elimina archivos de esta carpeta, es posible que las bibliotecas que hacen referencia a estos archivos en el área de trabajo dejen de funcionar./FileStore/tables
: Contiene los archivos que se importan mediante la interfaz de usuario. Si elimina archivos de esta carpeta, es posible que ya no se pueda acceder a las tablas que se crearon a partir de estos archivos.
Importante
Las bibliotecas se pueden instalar desde DBFS cuando se usa Databricks Runtime 14.3 LTS y versiones anteriores. Sin embargo, cualquier usuario del área de trabajo puede modificar los archivos de biblioteca almacenados en DBFS. Para mejorar la seguridad de las bibliotecas en un área de trabajo de Azure Databricks, el almacenamiento de archivos de biblioteca en la raíz de DBFS está en desuso y deshabilitado de forma predeterminada en Databricks Runtime 15.1 y versiones posteriores. Consulte El almacenamiento de bibliotecas en la raíz de DBFS está en desuso y deshabilitado de manera predeterminada.
En su lugar, Databricks recomienda cargar todas las bibliotecas, incluidas las bibliotecas de Python, los archivos JAR y los conectores de Spark, en archivos de área de trabajo o volúmenes de Unity Catalog, o mediante repositorios de paquetes de biblioteca. Si la carga de trabajo no admite estos patrones, también puede usar bibliotecas almacenadas en el almacenamiento de objetos en la nube.
Almacenamiento de un archivo en FileStore
Puede usar dbutils.fs.put
para escribir archivos de texto arbitrarios en el directorio /FileStore
de 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")
A continuación, reemplace <databricks-instance>
por la dirección URL del área de trabajo de la implementación de Azure Databricks.
El explorador web puede acceder a los archivos almacenados en /FileStore
desde https://<databricks-instance>/files/<path-to-file>?o=######
. Por ejemplo, se puede acceder al archivo almacenado en /FileStore/my-stuff/my-file.txt
desde https://<databricks-instance>/files/my-stuff/my-file.txt?o=######
, donde el número después de o=
es el mismo que en la dirección URL.
Nota:
También puede usar las interfaces de carga de archivos DBFS para colocar los archivos en el directorio /FileStore
. Vea Exploración y creación de tablas en DBFS.
Inserción de imágenes estáticas en cuadernos
Puede usar la ubicación files/
para insertar imágenes estáticas en los cuadernos:
displayHTML("<img src ='files/image.jpg'>")
O bien, sintaxis de importación de imágenes de Markdown:
%md
![my_test_image](files/image.jpg)
Puede cargar imágenes estáticas usando el DBFS API de DBFS y la biblioteca de Python para solicitudes HTTP. En el ejemplo siguiente:
- Reemplace
<databricks-instance>
por la dirección URL del área de trabajo de la implementación de Azure Databricks. - Reemplace
<token>
por el valor del token de acceso personal. - Reemplace
<image-dir>
por la ubicación enFileStore
donde desea cargar los archivos de imagen.
Nota:
Como procedimiento recomendado de seguridad, cuando se autentique con herramientas, sistemas, scripts y aplicaciones automatizados, Databricks recomienda usar los tokens de acceso personal pertenecientes a las entidades de servicio en lugar de a los usuarios del área de trabajo. Para crear tókenes para entidades de servicio, consulte Administración de tokens de acceso para una entidad de servicio.
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)
Escalado de imágenes estáticas
Para escalar el tamaño de una imagen que ha guardado en DBFS, copie la imagen en /FileStore
y, a continuación, cambie el tamaño mediante parámetros de imagen en 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;">''')
Ejemplo de cuaderno: uso de una biblioteca de JavaScript
En este cuaderno se muestra cómo usar FileStore para contener una biblioteca de JavaScript.