Compartir a través de


¿Qué son los volúmenes de Unity Catalog?

Los volúmenes son objetos del catálogo Unity que permiten gobernar conjuntos de datos no tabulares. Los volúmenes representan un volumen lógico de almacenamiento en una ubicación de almacenamiento de objetos en la nube. Los volúmenes proporcionan funcionalidades para acceder, almacenar, gobernar y organizar archivos.

Mientras que las tablas proporcionan gobernanza sobre conjuntos de datos tabulares, los volúmenes agregan gobernanza sobre conjuntos de datos no tabulares. Puede usar volúmenes para almacenar archivos en cualquier formato, incluidos datos estructurados, semiestructurados y no estructurados, así como acceder a ellos.

Databricks recomienda usar volúmenes para gobernar el acceso a todos los datos no tabulares. Al igual que las tablas, los volúmenes pueden ser administrados o externos.

Importante

No se pueden usar volúmenes como ubicación para las tablas. Los volúmenes están diseñados solo para el acceso a datos basado en rutas de acceso. Use tablas cuando quiera trabajar con datos tabulares en Unity Catalog.

Los artículos siguientes proporcionan más información sobre cómo trabajar con volúmenes:

Nota:

Al trabajar con volúmenes, se debe usar un almacén SQL o un clúster en el que se ejecute Databricks Runtime 13.3 LTS o una versión posterior, a menos que se usen las interfaces de usuario de Azure Databricks, como el Explorador de catálogo.

¿Qué es un volumen administrado?

Un volumen administrado es un volumen de almacenamiento regulado por el catálogo de Unity creado dentro de la ubicación de almacenamiento administrada del esquema contenedor. Consulte Especificar una ubicación de almacenamiento administrada en Unity Catalog.

Los volúmenes administrados permiten la creación de almacenamiento regulado para trabajar con archivos sin la sobrecarga de ubicaciones externas y credenciales de almacenamiento. No es necesario especificar una ubicación para crear un volumen administrado, y el acceso a todos los archivos de los datos de los volúmenes administrados se realiza a través de rutas de acceso administradas por Unity Catalog.

¿Qué es un volumen externo?

Un volumen externo es un volumen de almacenamiento regulado por Unity Catalog y registrado en un directorio de una ubicación externa mediante credenciales de almacenamiento reguladas por Unity Catalog.

El catálogo de Unity no administra el ciclo de vida ni el diseño de los archivos en volúmenes externos. Cuando se anula una tabla externa, Unity Catalog no elimina los datos subyacentes.

¿Qué ruta de acceso se usa para acceder a los archivos de un volumen?

Los volúmenes se sitúan en el tercer nivel del espacio de nombres de tres niveles de Unity Catalog (catalog.schema.volume):

Diagrama del modelo de objetos de Unity Catalog, centrado en el volumen

La ruta de acceso a los volúmenes es la misma tanto si se usa Apache Spark, SQL o Python como otros lenguajes y bibliotecas. Esto difiere de los patrones de acceso heredados para los archivos del almacenamiento de objetos enlazados a un área de trabajo de Azure Databricks.

La ruta de acceso a los archivos de los volúmenes tiene el siguiente formato:

/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

Azure Databricks también admite un esquema dbfs:/ opcional al trabajar con Apache Spark, por lo que también funciona la siguiente ruta de acceso:

dbfs:/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

La secuencia /<catalog>/<schema>/<volume> de la ruta de acceso corresponde a los tres nombres de objeto de Unity Catalog asociados al archivo. Estos elementos de ruta de acceso son de solo lectura y no los pueden escribir directamente los usuarios, lo que significa que no es posible crear o eliminar estos directorios mediante operaciones del sistema de archivos. Se administran automáticamente y se mantienen sincronizados con las entidades de Unity Catalog correspondientes.

Nota:

También puede acceder a los datos de volúmenes externos mediante URI de almacenamiento en la nube.

Rutas de acceso reservadas para volúmenes

Los volúmenes presentan las siguientes rutas de acceso reservadas que se usan para acceder a volúmenes:

  • dbfs:/Volumes
  • /Volumes

Nota:

Las rutas de acceso también están reservadas para posibles errores tipográficos de estas rutas de acceso de las API de Apache Spark y dbutils, incluidos /volumes, /Volume y /volume, si están precedidas o no de dbfs:/. La ruta de acceso /dbfs/Volumes también está reservada, pero no se puede usar para acceder a los volúmenes.

Los volúmenes solo se admiten en Databricks Runtime 13.3 LTS y versiones posteriores. En Databricks Runtime 12.2 LTS y versiones posteriores, las operaciones /Volumes con rutas de acceso pueden realizarse correctamente, pero solo pueden escribir datos en discos de almacenamiento efímeros conectados a clústeres de proceso en lugar de conservar datos en volúmenes de Catálogo de Unity según lo previsto.

Importante

Si tiene datos preexistentes almacenados en una ruta reservada en la raíz de DBFS, puede presentar una incidencia de soporte técnico para obtener acceso temporal a esos datos para moverlos a otra ubicación.

Limitaciones

Debe usar el proceso habilitado para catálogos de Unity para interactuar con los volúmenes de Unity Catalog. Los volúmenes no admiten todas las cargas de trabajo.

Nota:

Los volúmenes no admiten comandos dbutils.fs distribuidos a ejecutores.

Se presentan las siguientes limitaciones:

En Databricks Runtime 14.3 LTS y versiones posteriores:

  • En clústeres de usuario único, no se puede acceder a volúmenes desde hilos y subprocesos en Scala.

En Databricks Runtime 14.2 y versiones anteriores:

  • En el proceso configurado con el modo de acceso compartido, no puede usar UDF para acceder a los volúmenes.
    • Tanto Python como Scala tienen acceso a FUSE desde el controlador, pero no desde los ejecutores.
    • El código Scala que realiza operaciones de E/S puede ejecutarse en el controlador, pero no en los ejecutores.
  • En el proceso configurado con el modo de acceso de usuario único, no hay compatibilidad con FUSE en Scala, con el código de E/S de Scala que accede a datos mediante rutas de acceso de volumen ni con UDF de Scala. Las UDF de Python se admiten en modo de acceso de usuario único.

En todas las versiones admitidas de Databricks Runtime:

  • Las UDF del catálogo de Unity no admiten el acceso a rutas de acceso a archivos de volumen.

  • No se puede acceder a los volúmenes desde RDD.

  • No puede usar spark-submit con archivos JAR almacenados en un volumen.

  • No se pueden definir dependencias a otras bibliotecas a las que se accede a través de rutas de acceso de volumen dentro de un archivo Wheel o JAR.

  • Los objetos de Unity Catalog no se pueden enumerar con los patrones /Volumes/<catalog-name> o /Volumes/<catalog-name>/<schema-name>. Se debe usar una ruta de acceso completa que incluya un nombre de volumen.

  • El punto de conexión de DBFS para la API de REST no admite rutas de acceso de volúmenes.

  • No se pueden especificar volúmenes como destino para la entrega de registros del clúster.

  • %sh mv no se admite para mover archivos entre volúmenes. Use dbutils.fs.mv o %sh cp en su lugar.

  • No se puede crear un sistema de archivos de Hadoop personalizado con volúmenes, por lo que no se admite lo siguiente:

    import org.apache.hadoop.fs.Path
    val path =  new Path("dbfs:/Volumes/main/default/test-volume/file.txt")
    val fs = path.getFileSystem(sc.hadoopConfiguration)
    fs.listStatus(path)
    
  • Los volúmenes no están disponibles en las regiones de Azure Government ni en las áreas de trabajo con cumplimiento de FedRAMP.

  • Debe usar el formato de ruta de acceso con un esquema dbfs:/ en el panel de configuración de la biblioteca de Azure Data Factory. Por ejemplo, dbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/file.