Comparteix via


¿Dónde escribe Azure Databricks datos?

En este artículo se detallan las ubicaciones en las que Azure Databricks escribe datos durante las operaciones diarias y las configuraciones. Dado que Azure Databricks tiene un conjunto de herramientas que abarcan muchas tecnologías e interactúan con los recursos de la nube en un modelo de responsabilidad compartida, las ubicaciones predeterminadas utilizadas para almacenar datos varían en función del entorno de ejecución, las configuraciones y las bibliotecas.

La información de este artículo pretende ayudarlo a entender las rutas por defecto para varias operaciones y cómo las configuraciones pueden alterar estos valores por defecto. Para obtener instrucciones sobre cómo configurar y controlar el acceso a los datos, consulte Gobernanza de datos con Azure Databricks.

Para obtener información sobre cómo configurar el almacenamiento de objetos y otros orígenes de datos, consulte Conexión a orígenes de datos y servicios externos.

¿Qué es el almacenamiento de objetos?

En la informática en la nube, el almacenamiento de objetos o el almacenamiento de blobs hace referencia a contenedores de almacenamiento que mantienen datos como objetos, con cada objeto que consta de datos, metadatos y un identificador de recursos único global (URI). Las operaciones de manipulación de datos en el almacenamiento de objetos a menudo se limitan a crear, leer, actualizar y eliminar (CRUD) a través de una interfaz de API REST. Algunas ofertas de almacenamiento de objetos incluyen características como el control de versiones y la administración del ciclo de vida. El almacenamiento de objetos tiene las siguientes ventajas:

  • Alta disponibilidad, durabilidad y confiabilidad.
  • Menor costo de almacenamiento en comparación con la mayoría de las demás opciones de almacenamiento.
  • Infinitamente escalable (limitado por la cantidad total de almacenamiento disponible en una región determinada de la nube).

La mayoría de los lagos de datos en la nube se basan en formatos de datos de código abierto en el almacenamiento de objetos en la nube.

¿Cómo usa Azure Databricks el almacenamiento de objetos?

El almacenamiento de objetos es la forma principal de almacenamiento que usa Azure Databricks para la mayoría de las operaciones. Puede configurar el acceso al almacenamiento de objetos en la nube mediante credenciales de almacenamiento del catálogo de Unity y ubicaciones externas. A continuación, estas ubicaciones se usan para almacenar archivos de datos que respaldan tablas y volúmenes. Consulte Conexión al almacenamiento de objetos en la nube mediante el catálogo de Unity.

A menos que configure específicamente una tabla en un sistema de datos externo, todas las tablas creadas en Azure Databricks almacenan datos en el almacenamiento de objetos en la nube.

Los archivos de Delta Lake almacenados en el almacenamiento de objetos en la nube proporcionan la base de datos para un almacén de lago de Databricks.

¿Qué es el almacenamiento en bloque?

En la informática en la nube, el almacenamiento en bloque o el almacenamiento en disco hace referencia a los volúmenes de almacenamiento que corresponden a unidades de disco duro tradicionales (HDD) o unidades de estado sólido (SSD), también conocidas como "unidades de disco duro". Al implementar el almacenamiento en bloques en un entorno de informática en la nube, normalmente se implementa una partición lógica de una o varias unidades físicas. Las implementaciones varían ligeramente entre las ofertas de productos y los proveedores de nube, pero las siguientes características normalmente se encuentran en las implementaciones:

  • Todas las máquinas virtuales requieren un volumen de almacenamiento en bloque conectado.
  • Los archivos y programas instalados en un volumen de almacenamiento en bloque se conservan siempre y cuando el volumen de almacenamiento en bloque persista.
  • Los volúmenes de almacenamiento en bloques se suelen usar para el almacenamiento de datos temporal.
  • Los volúmenes de almacenamiento en bloques conectados a las máquinas virtuales normalmente se eliminan junto con las máquinas virtuales.

¿Cómo usa Azure Databricks el almacenamiento de bloque?

Al activar los recursos de proceso, Azure Databricks configura e implementa máquinas virtuales y adjunta volúmenes de almacenamiento en bloque. Este almacenamiento en bloque se usa para almacenar archivos de datos efímeros durante la vigencia del recurso de proceso. Estos archivos incluyen el sistema operativo y las bibliotecas instaladas, así como los datos usados por la caché del disco. Aunque Apache Spark usa el almacenamiento en bloque en segundo plano para lograr una carga de datos y una paralelización eficaces, la mayor parte del código que se ejecuta en Azure Databricks no guarda ni carga datos directamente para bloquear el almacenamiento.

Puede ejecutar un código arbitrario, como los comandos de Python o Bash que usan el almacenamiento en bloque conectado al nodo del controlador. Consulte Trabajar con archivos en almacenamiento efímero conectado al nodo del controlador.

¿Dónde almacena Unity Catalog los archivos de datos?

Unity Catalog se basa en los administradores para configurar relaciones entre el almacenamiento en la nube y los objetos relacionales. La ubicación exacta en la que residen los datos depende de cómo los administradores hayan configurado las relaciones.

Los datos escritos o cargados en objetos regidos por el Catálogo de Unity se almacenan en una de las siguientes ubicaciones:

¿Dónde almacena Databricks SQL tablas de respaldo de datos?

Al ejecutar una CREATE TABLE instrucción con Databricks SQL configurado con el catálogo de Unity, el comportamiento predeterminado es almacenar archivos de datos en una ubicación de almacenamiento administrada configurada con el catálogo de Unity. Consulte ¿Dónde almacena Unity Catalog los archivos de datos?.

El catálogo heredado hive_metastore sigue diferentes reglas. Consulte Trabajo con el metastore de Hive heredado y el Catálogo de Unity.

¿Dónde almacena Lakeflow Spark Declarative Pipelines los archivos de datos?

Databricks recomienda usar el catálogo de Unity al crear canalizaciones declarativas de Spark de Lakeflow. Los datos se almacenan en directorios de la ubicación de almacenamiento administrada asociada al esquema de destino.

Opcionalmente, puede configurar los pipelines declarativos de Spark de Lakeflow utilizando el metastore de Hive. Cuando se configura con metastore de Hive, se puede especificar una ubicación de almacenamiento en DBFS o almacenamiento de objetos en la nube. Si no especifica una ubicación, se asignará una ubicación en la raíz DBFS a su canalización.

¿Dónde escribe Apache Spark archivos de datos?

Databricks recomienda usar nombres de objeto con el Catálogo de Unity para leer y escribir datos. También puede escribir archivos en volúmenes de Catálogo de Unity con el siguiente patrón: /Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>. Debe tener privilegios suficientes para cargar, crear, actualizar o insertar datos en objetos regulados por el catálogo de Unity.

Opcionalmente, puede utilizar indicadores universales de recursos (URI) para especificar las rutas a los archivos de datos. Los URI varían en función del proveedor de la nube. También debe tener permisos de escritura configurados para su recurso del proceso actual para escribir en el almacenamiento de objetos en la nube.

Azure Databricks usa el sistema de archivos de Databricks para asignar comandos de lectura y escritura de Apache Spark al almacenamiento de objetos en la nube. Cada área de trabajo de Azure Databricks tiene una ubicación de almacenamiento raíz DBFS configurada en la cuenta en la nube asignada al área de trabajo, a la que todos los usuarios pueden acceder para leer y escribir datos. Databricks no recomienda utilizar la raíz DBFS para almacenar datos de producción. Consulte ¿Qué es DBFS? y Recomendaciones para trabajar con raíz de DBFS.

¿Dónde escribe pandas archivos de datos en Azure Databricks?

En Databricks Runtime 14.0 y superiores, el directorio de trabajo actual (CWD) por defecto para todas las operaciones locales de lectura y escritura en Python es el directorio que contiene el cuaderno. Si solo proporciona un nombre de archivo al guardar un archivo de datos, pandas guarda ese archivo de datos como un archivo de área de trabajo paralelo a su bloc de notas en ejecución.

No todas las versiones de Databricks Runtime admiten archivos de área de trabajo, y algunas versiones de Databricks Runtime tienen un comportamiento diferente dependiendo de si usa blocs de notas o carpetas Git. Consulte ¿Cuál es el directorio de trabajo actual predeterminado?.

¿Dónde debo escribir archivos temporales en Azure Databricks?

Si debe escribir archivos temporales que no quiere conservar después de que se apague el clúster, escribir los archivos temporales en $TEMPDIR ofrece un mejor rendimiento que escribir en el directorio de trabajo actual (CWD) si el CWD se encuentra en el sistema de archivos del área de trabajo. También puede evitar superar los límites de tamaño de rama si el código se ejecuta en un repositorio. Para obtener más información, consulte Límites de archivos y repositorios.

Escriba en /local_disk0 si la cantidad de datos que se va a escribir es grande y quiere que el almacenamiento tenga escalabilidad automática.