Nota
L'accés a aquesta pàgina requereix autorització. Pots provar d'iniciar sessió o canviar de directori.
L'accés a aquesta pàgina requereix autorització. Pots provar de canviar directoris.
Azure Databricks tiene varias utilidades y API para interactuar con archivos en las siguientes ubicaciones:
- Volúmenes del catálogo de Unity
- Archivos del área de trabajo
- Almacenamiento de objetos en la nube
- Montajes de DBFS y raíz de DBFS
- Almacenamiento efímero conectado al nodo de controlador del clúster
En este artículo se incluyen ejemplos para interactuar con archivos en estas ubicaciones para las siguientes herramientas:
- Apache Spark
- Spark SQL y Databricks SQL
- Utilidades del sistema de archivos de Databricks (
dbutils.fso%fs) - CLI de Databricks
- Databricks REST API
- Comandos de shell de Bash (
%sh) - Instalaciones en la biblioteca con ámbito de cuaderno mediante
%pip - Pandas
- Utilidades de procesamiento y administración de archivos de Python de OSS
Importante
Algunas operaciones de Databricks, especialmente las que usan bibliotecas de Java o Scala, se ejecutan como procesos JVM, por ejemplo:
- Especificación de una dependencia de archivos JAR mediante
--jarsen configuraciones de Spark - Llamar a
catojava.io.Fileen notebooks de Scala - Orígenes de datos personalizados, como
spark.read.format("com.mycompany.datasource") - Bibliotecas que cargan archivos mediante Java
FileInputStreamoPaths.get()
Estas operaciones no admiten la lectura ni la escritura en volúmenes de Unity Catalog o archivos del área de trabajo utilizando rutas de archivo estándar, como /Volumes/my-catalog/my-schema/my-volume/my-file.csv. Si necesita acceder a archivos de volumen o archivos de área de trabajo desde dependencias jar o bibliotecas basadas en JVM, copie primero los archivos para calcular el almacenamiento local mediante Python o comandos %sh como %sh mv.. No use %fs y dbutils.fs que usen la JVM. Para acceder a los archivos ya copiados localmente, use comandos específicos del lenguaje como Python shutil o use comandos %sh. Si un archivo debe estar presente durante el inicio del clúster, use un script de inicialización para mover primero el archivo. Consulte ¿Qué son los scripts de inicialización?.
¿Es necesario proporcionar un esquema de URI para acceder a los datos?
Las rutas de acceso a datos de Azure Databricks siguen uno de los siguientes estándares:
Las rutas de acceso de estilo URI incluyen un esquema URI. En el caso de las soluciones de acceso a datos nativos de Databricks, los esquemas de URI son opcionales para la mayoría de los casos de uso. Al acceder directamente a los datos en el almacenamiento de objetos en la nube, debe proporcionar el esquema de URI correcto para el tipo de almacenamiento.
Las rutas de acceso de estilo POSIX proporcionan acceso a datos relativos a la raíz del controlador (
/). Las rutas de acceso de estilo POSIX nunca requieren un esquema. Puede usar volúmenes de Catálogo de Unity o montajes DBFS para proporcionar acceso de estilo POSIX a los datos en el almacenamiento de objetos en la nube. Muchos marcos de ML y otros módulos de Python de OSS requieren FUSE y solo pueden usar rutas de acceso de estilo POSIX.
Nota
Las operaciones de archivo que requieren acceso a datos FUSE no pueden acceder directamente al almacenamiento de objetos en la nube mediante URI. Databricks recomienda usar volúmenes de Catálogo de Unity para configurar el acceso a estas ubicaciones para FUSE.
En máquinas configuradas con el modo de acceso dedicado (anteriormente modo de acceso de usuario único) y Databricks Runtime 14.3 y versiones posteriores, Scala admite FUSE para volúmenes y archivos de área de trabajo de Unity Catalog, excepto para los subprocesos que se originan a partir de Scala, como el comando Scala "cat /Volumes/path/to/file".!!.
Trabajar con archivos en los volúmenes del Unity Catalog
Databricks recomienda usar volúmenes de Catálogo de Unity para configurar el acceso a archivos de datos no tabulares almacenados en el almacenamiento de objetos en la nube. Para obtener documentación completa sobre cómo administrar archivos en volúmenes, incluidas instrucciones detalladas y procedimientos recomendados, consulte Trabajar con archivos en volúmenes de Catálogo de Unity.
En los ejemplos siguientes se muestran operaciones comunes con diferentes herramientas e interfaces:
| Herramienta | Ejemplo |
|---|---|
| Apache Spark | spark.read.format("json").load("/Volumes/my_catalog/my_schema/my_volume/data.json").show() |
| Spark SQL y Databricks SQL | SELECT * FROM csv.`/Volumes/my_catalog/my_schema/my_volume/data.csv`;LIST '/Volumes/my_catalog/my_schema/my_volume/'; |
| Utilidades del sistema de archivos de Databricks | dbutils.fs.ls("/Volumes/my_catalog/my_schema/my_volume/")%fs ls /Volumes/my_catalog/my_schema/my_volume/ |
| CLI de Databricks | databricks fs cp /path/to/local/file dbfs:/Volumes/my_catalog/my_schema/my_volume/ |
| Databricks REST API | POST https://<databricks-instance>/api/2.1/jobs/create{"name": "A multitask job", "tasks": [{..."libraries": [{"jar": "/Volumes/dev/environment/libraries/logging/Logging.jar"}],},...]} |
| Comandos de shell de Bash | %sh curl http://<address>/text.zip -o /Volumes/my_catalog/my_schema/my_volume/tmp/text.zip |
| Instalaciones de biblioteca | %pip install /Volumes/my_catalog/my_schema/my_volume/my_library.whl |
| Pandas | df = pd.read_csv('/Volumes/my_catalog/my_schema/my_volume/data.csv') |
| Python de código abierto | os.listdir('/Volumes/my_catalog/my_schema/my_volume/path/to/directory') |
Para obtener información sobre las limitaciones y soluciones alternativas de los volúmenes, consulte Limitaciones de trabajar con archivos en volúmenes.
Trabajar con archivos del área de trabajo
Los archivos del área de trabajo de Databricks son los archivos de un área de trabajo, almacenados en la cuenta de almacenamiento del área de trabajo. Puede usar archivos de área de trabajo para almacenar y acceder a archivos como cuadernos, archivos de código fuente, archivos de datos y otros recursos del área de trabajo.
Importante
Dado que los archivos de área de trabajo tienen restricciones de tamaño, Databricks solo recomienda almacenar archivos de datos pequeños aquí principalmente para desarrollo y pruebas. Para obtener recomendaciones sobre dónde almacenar otros tipos de archivo, consulte Tipos de archivo.
| Herramienta | Ejemplo |
|---|---|
| Apache Spark | spark.read.format("json").load("file:/Workspace/Users/<user-folder>/data.json").show() |
| Spark SQL y Databricks SQL | SELECT * FROM json.`file:/Workspace/Users/<user-folder>/file.json`; |
| Utilidades del sistema de archivos de Databricks | dbutils.fs.ls("file:/Workspace/Users/<user-folder>/")%fs ls file:/Workspace/Users/<user-folder>/ |
| CLI de Databricks | databricks workspace list |
| Databricks REST API | POST https://<databricks-instance>/api/2.0/workspace/delete{"path": "/Workspace/Shared/code.py", "recursive": "false"} |
| Comandos de shell de Bash | %sh curl http://<address>/text.zip -o /Workspace/Users/<user-folder>/text.zip |
| Instalaciones de biblioteca | %pip install /Workspace/Users/<user-folder>/my_library.whl |
| Pandas | df = pd.read_csv('/Workspace/Users/<user-folder>/data.csv') |
| Python de código abierto | os.listdir('/Workspace/Users/<user-folder>/path/to/directory') |
Nota
El esquema de file:/ es necesario cuando se trabaja con utilidades de Databricks, Apache Spark o SQL.
En los espacios de trabajo donde la raíz y los montajes de DBFS están deshabilitados, también puede usar dbfs:/Workspace para acceder a los archivos del espacio de trabajo con las herramientas de Databricks. Esto requiere Databricks Runtime 13.3 LTS o superior. Vea Deshabilitar el acceso a la raíz de DBFS y los montajes en su área de trabajo existente de Azure Databricks.
Para conocer las limitaciones al trabajar con archivos del espacio de trabajo, consulte Limitaciones.
¿Dónde van los archivos del área de trabajo eliminados?
Eliminar un archivo de espacio de trabajo lo envía a la papelera. Puede recuperar o eliminar permanentemente archivos de la papelera mediante la interfaz de usuario.
Trabajar con archivos en el almacenamiento de objetos en la nube
Databricks recomienda usar volúmenes de Catálogo de Unity para configurar el acceso seguro a los archivos en el almacenamiento de objetos en la nube. Debe configurar los permisos si decide acceder a los datos directamente en el almacenamiento de objetos en la nube mediante URI. Consulte Volúmenes administrados y externos.
En los ejemplos siguientes se usan URI para acceder a los datos en el almacenamiento de objetos en la nube:
| Herramienta | Ejemplo |
|---|---|
| Apache Spark | spark.read.format("json").load("abfss://container-name@storage-account-name.dfs.core.windows.net/path/file.json").show() |
| Spark SQL y Databricks SQL |
SELECT * FROM csv.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/file.json`;
LIST 'abfss://container-name@storage-account-name.dfs.core.windows.net/path';
|
| Utilidades del sistema de archivos de Databricks |
dbutils.fs.ls("abfss://container-name@storage-account-name.dfs.core.windows.net/path/")
%fs ls abfss://container-name@storage-account-name.dfs.core.windows.net/path/
|
| CLI de Databricks | No compatible |
| Databricks REST API | No compatible |
| Comandos de shell de Bash | No compatible |
| Instalaciones de biblioteca | %pip install abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/library.whl |
| Pandas | No compatible |
| Python de código abierto | No compatible |
Trabajo con archivos en montajes de DBFS y raíz de DBFS
Importante
La raíz de DBFS y los montajes de DBFS están obsoletos y no son recomendados por Databricks. Las nuevas cuentas son aprovisionadas sin acceso a estas características. Databricks recomienda usar volúmenes de Unity Catalog, ubicaciones externas o archivos de área de trabajo como alternativas.
| Herramienta | Ejemplo |
|---|---|
| Apache Spark | spark.read.format("json").load("/mnt/path/to/data.json").show() |
| Spark SQL y Databricks SQL | SELECT * FROM json.`/mnt/path/to/data.json`; |
| Utilidades del sistema de archivos de Databricks | dbutils.fs.ls("/mnt/path")%fs ls /mnt/path |
| CLI de Databricks | databricks fs cp dbfs:/mnt/path/to/remote/file /path/to/local/file |
| Databricks REST API | POST https://<host>/api/2.0/dbfs/delete --data '{ "path": "/tmp/HelloWorld.txt" }' |
| Comandos de shell de Bash | %sh curl http://<address>/text.zip > /dbfs/mnt/tmp/text.zip |
| Instalaciones de biblioteca | %pip install /dbfs/mnt/path/to/my_library.whl |
| Pandas | df = pd.read_csv('/dbfs/mnt/path/to/data.csv') |
| Python de código abierto | os.listdir('/dbfs/mnt/path/to/directory') |
Nota
El esquema de dbfs:/ es necesario cuando se trabaja con la CLI de Databricks.
Trabajar con archivos en almacenamiento efímero conectado al nodo del controlador
El almacenamiento efímero conectado al nodo del controlador es almacenamiento en bloque con acceso integrado a rutas basadas en POSIX. Los datos almacenados en esta ubicación desaparecen cuando un clúster finaliza o se reinicia.
| Herramienta | Ejemplo |
|---|---|
| Apache Spark | No compatible |
| Spark SQL y Databricks SQL | No compatible |
| Utilidades del sistema de archivos de Databricks | dbutils.fs.ls("file:/path")%fs ls file:/path |
| CLI de Databricks | No compatible |
| Databricks REST API | No compatible |
| Comandos de shell de Bash | %sh curl http://<address>/text.zip > /tmp/text.zip |
| Instalaciones de biblioteca | No compatible |
| Pandas | df = pd.read_csv('/path/to/data.csv') |
| Python de código abierto | os.listdir('/path/to/directory') |
Nota
El esquema de file:/ es necesario cuando se trabaja con utilidades de Databricks.
Mover datos de almacenamiento efímero a volúmenes
Es posible que quiera acceder a los datos descargados o guardados en el almacenamiento efímero mediante Apache Spark. Dado que el almacenamiento efímero está conectado al controlador y Spark es un motor de procesamiento distribuido, no todas las operaciones pueden acceder directamente a los datos aquí. Supongamos que debe mover datos del sistema de archivos del controlador a los volúmenes del catálogo de Unity. En ese caso, puedes copiar archivos mediante comandos magic o utilidades de Databricks, como en los ejemplos siguientes:
dbutils.fs.cp ("file:/<path>", "/Volumes/<catalog>/<schema>/<volume>/<path>")
%sh cp /<path> /Volumes/<catalog>/<schema>/<volume>/<path>
%fs cp file:/<path> /Volumes/<catalog>/<schema>/<volume>/<path>
Recursos adicionales
Para obtener información sobre cómo cargar archivos locales o descargar archivos de Internet en Azure Databricks, consulte Carga de archivos en Azure Databricks.