Compartir vía


¿Dónde se escriben los datos de Azure Databricks?

En este artículo se detallan las ubicaciones en las que Azure Databricks escribe datos con operaciones y configuraciones frecuentes. 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. Los administradores de datos y los administradores que buscan instrucciones sobre cómo configurar y controlar el acceso a los datos deben consultar Gobernanza de datos con Unity Catalog.

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

¿Qué es el almacenamiento de objetos?

En la informática en la nube, el almacenamiento de objetos o el almacenamiento de blobs hacen referencia a los contenedores de almacenamiento que mantienen datos como objetos, y cada objeto 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. El acceso al almacenamiento de objetos en la nube se configura mediante las credenciales de almacenamiento del catálogo de Unity y localizaciones externas. A continuación, estas ubicaciones se usan para almacenar archivos de datos que respaldan tablas y volúmenes. Consulte Conexión al almacenamiento y servicios 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 hacen referencia a 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 bloque en un entorno de informática en la nube, 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 bloque a menudo se usar para el almacenamiento de datos temporal.
  • Normalmente, los volúmenes de almacenamiento en bloques conectados a as máquinas virtuales se eliminan junto con ellas.

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

Al activar los recursos de proceso, Azure Databricks configura e implementa máquinas virtuales y asocia volúmenes de almacenamiento en bloques. 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 el Catálogo Unity los archivos de datos?

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

Los datos escritos o cargados en objetos gobernados por Unity Catalog se almacenan en una de las siguientes ubicaciones:

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

Cuando se ejecuta un contrato CREATE TABLE con Databricks SQL configurado con Unity Catalog, el comportamiento predeterminado es almacenar los archivos de datos en una ubicación de almacenamiento administrado configurado con Unity Catalog. Consulte ¿Dónde almacena el Catálogo Unity los archivos de datos?.

El catálogo heredado hive_metastore sigue reglas diferentes. Consulte Trabajar con Unity Catalog y el metastore Hive heredado.

¿Dónde almacena Delta Live Tables los archivos de datos?

Databricks recomienda utilizar Unity Catalog al crear canalizaciones DLT. Los datos se almacenan en directorios dentro de la ubicación de almacenamiento administrada asociada al esquema de destino.

Opcionalmente, puede configurar canalizaciones DLT utilizando el metastore 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 los archivos de datos?

Databricks recomienda usar nombres de objetos con Unity Catalog para leer y escribir datos. También puede escribir archivos en volúmenes del Catálogo Unity utilizando el siguiente patrón: /Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>. Debe tener privilegios suficientes para cargar, crear, actualizar o insertar datos en objetos gobernados por el Catálogo 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 utiliza el sistema de archivos Databricks para asignar los 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 los 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.