Creación y administración de catálogos

En este artículo se muestra cómo crear y administrar catálogos en Unity Catalog. Un catálogo contiene esquemas (bases de datos) y un esquema contiene tablas, vistas, volúmenes, modelos y funciones.

Nota:

En las áreas de trabajo habilitadas automáticamente para el catálogo de Unity, se creó automáticamente un Catálogo de áreas de trabajo. Todos los usuarios del área de trabajo (y solo de su área de trabajo) tienen acceso a él de forma predeterminada. Consulte Paso 1: Confirmar que el área de trabajo está habilitada para Unity Catalog.

Nota:

Para obtener información sobre cómo crear un catálogo externo, un objeto de Unity Catalog que refleja una base de datos en un sistema de datos externo, consulte Creación de un catálogo externo. Vea también Administrar y trabajar con catálogos externos.

Requisitos

Para crear un catálogo:

  • Debe ser un administrador de metastore de Azure Databricks o tener el privilegio CREATE CATALOG en el metastore.

  • Debe tener un metastore de Unity Catalog vinculado al área de trabajo donde se crea el catálogo.

  • El clúster que se usa para ejecutar un cuaderno para crear un catálogo debe usar un modo de acceso compatible con Unity Catalog. Consulte Modos de acceso.

    Los almacenes de SQL siempre admiten Unity Catalog.

Creación de un catálogo

Para crear un catálogo, puede usar Explorador de catálogo o bien un comando de SQL.

Explorador de catálogos

  1. Inicie sesión en un área de trabajo vinculada al metastore.

  2. Haga clic en el Catalog iconCatálogo.

  3. Haga clic en el botón Crear catálogo.

  4. Seleccione el tipo de catálogo que desea crear:

    • Catálogo estándar: un objeto protegible que organiza los recursos de datos administrados por Unity Catalog. Para todos los casos de uso, excepto la federación de Lakehouse.
    • Catálogo externo: un objeto protegible en el Unity Catalog que refleja una base de datos en un sistema de datos externo mediante la federación de Lakehouse. Consulte Introducción a la configuración de la federación de Lakehouse.
  5. Especifique una ubicación de almacenamiento administrada (opcional, pero muy recomendable). Requiere el privilegio CREATE MANAGED STORAGE en la ubicación externa de destino. Consulte Especificar una ubicación de almacenamiento administrada en Unity Catalog.

    Importante

    Si el área de trabajo no tiene una ubicación de almacenamiento a nivel de metastore, debe especificar una ubicación de almacenamiento administrada al crear un catálogo.

  6. Haga clic en Crear.

  7. (Opcional) Especifique el área de trabajo a la que está enlazado el catálogo.

    De manera predeterminada, el catálogo se comparte con todas las áreas de trabajo asociadas al metastore actual. Si el catálogo contiene datos que deben restringirse a áreas de trabajo específicas, vaya a la pestaña Áreas de trabajo y agregue esas áreas de trabajo.

    Para obtener más información, consulte (Opcional) Asignación de un catálogo a áreas de trabajo específicas.

  8. Asígnele permisos al catálogo. Consulte Privilegios de Unity Catalog y objetos protegibles.

Sql

  1. Ejecute el siguiente comando SQL en un cuaderno o en el editor de Databricks SQL. Los elementos entre corchetes son opcionales. Reemplace los valores de marcador de posición:

    • <catalog-name>: Un nombre para el catálogo.

    • <location-path>: opcional, pero muy recomendable. Proporcione una ruta de acceso de la ubicación de almacenamiento si quiere que las tablas administradas de este catálogo se almacenen en una ubicación diferente al almacenamiento raíz predeterminado configurado para el metastore.

      Importante

      Si el área de trabajo no tiene una ubicación de almacenamiento a nivel de metastore, debe especificar una ubicación de almacenamiento administrada al crear un catálogo.

      Esta ruta de acceso debe definirse en una configuración de ubicación externa y debe tener el privilegio CREATE MANAGED STORAGE en la configuración de ubicación externa. Puede usar la ruta de acceso definida en la configuración de ubicación externa o un subtrazado (es decir, 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance' o 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance/product'). Requiere Databricks Runtime 11.3 o posterior.

    • <comment>: descripción opcional u otro comentario.

    Nota:

    Si va a crear un catálogo externo (un objeto protegible en Unity Catalog que refleja una base de datos en un sistema de datos externo, usado para la federación de Lakehouse), el comando SQL es CREATE FOREIGN CATALOG y las opciones son diferentes. Consulte Creación de un catálogo externo.

    CREATE CATALOG [ IF NOT EXISTS ] <catalog-name>
       [ MANAGED LOCATION '<location-path>' ]
       [ COMMENT <comment> ];
    

    Por ejemplo, para crear un catálogo denominado example:

    CREATE CATALOG IF NOT EXISTS example;
    

    Si desea limitar el acceso de catálogo a áreas de trabajo específicas de su cuenta, lo que se conoce también como "enlace de catálogo de áreas de trabajo", consulte Enlace de un catálogo a una o varias áreas de trabajo.

    Para ver descripciones de los parámetros, consulte CREATE CATALOG.

  2. Asígnele privilegios al catálogo. Consulte Privilegios de Unity Catalog y objetos protegibles.

Al crear un catálogo, se crean automáticamente dos esquemas (bases de datos): default y information_schema.

También puede crear un catálogo con el proveedor de Databricks Terraform y databricks_catalog. Puede recuperar información sobre los catálogos mediante databricks_catalogs.

(Opcional) Asignación de un catálogo a áreas de trabajo específicas

Si usa áreas de trabajo para aislar el acceso a datos de usuario, puede limitar el acceso de catálogo a áreas de trabajo específicas de su cuenta, también conocidas como enlace de catálogo de áreas de trabajo. El valor predeterminado es compartir el catálogo con todas las áreas de trabajo asociadas al metastore actual.

Puede permitir el acceso de lectura y escritura al catálogo desde un área de trabajo (el valor predeterminado) o puede especificar el acceso de solo lectura. Si especifica solo lectura, se bloquearán todas las operaciones de escritura desde esa área de trabajo a ese catálogo.

Entre los casos de uso típicos para enlazar un catálogo a áreas de trabajo específicas se incluyen:

  • Asegurarse de que los usuarios solo pueden acceder a los datos de producción desde un entorno de área de trabajo de producción.
  • Asegurarse de que los usuarios solo pueden procesar datos confidenciales de un área de trabajo dedicada.
  • Conceder a los usuarios acceso de solo lectura a los datos de producción desde un área de trabajo de desarrollador para habilitar el desarrollo y las pruebas.

Ejemplo de enlace de catálogo de áreas de trabajo

Tome el ejemplo de aislamiento de producción y desarrollo. Si especifica que solo se puede acceder a los catálogos de datos de producción desde áreas de trabajo de producción, esto sustituye a las concesiones individuales que se emiten a los usuarios.

Catalog-workspace binding diagram

En este diagrama, prod_catalog está enlazado a dos áreas de trabajo de producción. Supongamos que a un usuario se le ha concedido acceso a una tabla en prod_catalog denominada my_table (mediante GRANT SELECT ON my_table TO <user>). Si el usuario intenta acceder a my_table en el área de trabajo de desarrollo, recibirá un mensaje de error. El usuario solo puede acceder a my_table desde las áreas de trabajo de Prod ETL y Prod Analytics.

Los enlaces de catálogo de áreas de trabajo se respetan en todas las áreas de la plataforma. Por ejemplo, si consulta el esquema de información, solo verá los catálogos accesibles en el área de trabajo donde emite la consulta. Del mismo modo, el linaje de datos y las interfaces de usuario de búsqueda muestran solo los catálogos asignados al área de trabajo (ya sea mediante enlaces o de manera predeterminada).

Enlace de un catálogo a una o varias áreas de trabajo

Para asignar un catálogo a áreas de trabajo específicas, puede usar Explorador de catálogo o la API REST de Unity Catalog:

Permisos necesarios: administrador del metastore o propietario del catálogo.

Nota:

Los administradores del metastore pueden ver todos los catálogos de un metastore mediante Explorador de catálogo y los propietarios del catálogo pueden ver todos los catálogos de su propiedad en un metastore, independientemente de si el catálogo está asignado al área de trabajo actual. Los catálogos que no están asignados al área de trabajo aparecen atenuados y no hay objetos secundarios visibles ni consultables.

Explorador de catálogos

  1. Inicie sesión en un área de trabajo vinculada al metastore.

  2. Haga clic en el Catalog iconCatálogo.

  3. En el panel Catálogoa la izquierda, haga clic en el nombre del catálogo.

    El panel principal Explorador de catálogo tiene como valor predeterminado la lista Catálogos. También puede seleccionar el catálogo allí.

  4. En la pestaña Áreas de trabajo, desactive la casilla Todas las áreas de trabajo tienen acceso.

    Si el catálogo ya está enlazado a una o varias áreas de trabajo, esta casilla ya está desactivada.

  5. Haga clic en Asignar a áreas de trabajo y escriba o busque las áreas de trabajo que desea asignar.

  6. (Opcional) Limite el acceso al área de trabajo a solo lectura.

    En el menú Administrar nivel de acceso , seleccione Cambiar acceso a solo lectura.

    Puede revertir esta selección a cualquier hora editando el catálogo y seleccionando Cambiar acceso para leer y escribir.

Para revocar el acceso, vaya a la pestaña Áreas de trabajo, seleccione el área de trabajo y haga clic en Revocar.

API

Hay dos API y dos pasos necesarios para asignar un catálogo a un área de trabajo. En los ejemplos siguientes, reemplace <workspace-url> por el nombre de la instancia del área de trabajo. Para obtener información sobre cómo obtener el nombre de la instancia del área de trabajo y el id. del área de trabajo, consulte Obtener identificadores para objetos del área de trabajo. Para más información sobre cómo obtener tokens de acceso, consulte Autenticación para la automatización de Azure Databricks: información general.

  1. Use la API catalogs para establecer el valor isolation mode del catálogo en ISOLATED:

    curl -L -X PATCH 'https://<workspace-url>/api/2.1/unity-catalog/catalogs/<my-catalog> \
    -H 'Authorization: Bearer <my-token> \
    -H 'Content-Type: application/json' \
    --data-raw '{
     "isolation_mode": "ISOLATED"
     }'
    

    El valor predeterminado de isolation mode es OPEN para todas las áreas de trabajo asociadas al metastore.

  2. Use la API de actualización bindings para asignar las áreas de trabajo al catálogo:

    curl -L -X PATCH 'https://<workspace-url>/api/2.1/unity-catalog/bindings/catalog/<my-catalog> \
    -H 'Authorization: Bearer <my-token> \
    -H 'Content-Type: application/json' \
    --data-raw '{
      "add": [{"workspace_id": <workspace-id>, "binding_type": <binding-type>}...],
      "remove": [{"workspace_id": <workspace-id>, "binding_type": "<binding-type>}...]
    }'
    

    Use las propiedades "add" y "remove" para agregar o quitar enlaces de área de trabajo. <binding-type> puede ser “BINDING_TYPE_READ_WRITE” (valor predeterminado) o “BINDING_TYPE_READ_ONLY”.

Para enumerar todas las asignaciones de área de trabajo de un catálogo, use la lista API bindings:

   curl -L -X GET 'https://<workspace-url>/api/2.1/unity-catalog/bindings/catalog/<my-catalog> \
   -H 'Authorization: Bearer <my-token> \

Desenlace de un catálogo de un área de trabajo

Para revocar el acceso de un área de trabajo a un catálogo, puede usar el Explorador de catálogos o la API workspace bindings.

Importante

Si el área de trabajo se ha habilitado automáticamente para Unity Catalog y tiene un catálogo de áreas de trabajo, los administradores del área de trabajo poseerán ese catálogo y tendrán todos los permisos de ese catálogo solo en el área de trabajo. Si desenlaza ese catálogo o lo enlaza a otros catálogos, debe conceder los permisos necesarios manualmente a los miembros del grupo de administradores del área de trabajo como usuarios individuales o mediante grupos de nivel de cuenta, ya que el grupo de administradores del área de trabajo es un grupo local del área de trabajo. Para obtener más información sobre los grupos de cuentas frente a grupos locales del área de trabajo, consulte Diferencia entre grupos de cuentas y grupos locales del área de trabajo.

Permisos necesarios: propietario del catálogo.

Explorador de catálogos

  1. Inicie sesión en un área de trabajo vinculada al metastore.
  2. Haga clic en el Catalog iconCatálogo.
  3. En el panel Catálogoa la izquierda, haga clic en el nombre del catálogo.
  4. En la pestaña Áreas de trabajo, seleccione el área de trabajo y haga clic en Revocar.

Para conceder acceso al catálogo desde todas las áreas de trabajo asociadas al metastore de Unity Catalog, seleccione Todas las áreas de trabajo tienen acceso.

API

Para usar la API de enlaces de área de trabajo para desenlazar un área de trabajo de un catálogo, ejecute lo siguiente. Reemplace <workspace-url> por el nombre de instancia del área de trabajo. Para obtener información sobre cómo obtener el nombre de la instancia del área de trabajo y el id. del área de trabajo, consulte Obtener identificadores para objetos del área de trabajo. Para más información sobre cómo obtener tokens de acceso, consulte Autenticación para la automatización de Azure Databricks: información general.

curl -L -X PATCH 'https://<workspace-url>/api/2.1/unity-catalog/workspace-bindings/catalogs/<my-catalog> \
-H 'Authorization: Bearer <my-token> \
-H 'Content-Type: application/json' \
--data-raw '{
  "unassign_workspaces": [<workspace-id>, <workspace-id2>]
}'

Adición de esquemas al catálogo

Para obtener información sobre cómo agregar esquemas (bases de datos) al catálogo. Consulte Creación y administración de esquemas (bases de datos).

Ver detalles de catálogo

Para ver información sobre un catálogo, puede usar Explorador de catálogo o bien un comando de SQL.

Explorador de catálogos

  1. Inicie sesión en un área de trabajo vinculada al metastore.

  2. Haga clic en el Catalog iconCatálogo.

  3. En el panel de Catálogo, busque el catálogo y haga clic en su nombre.

    Algunos detalles se muestran en la parte superior de la página. Otros se pueden ver en las pestañas Esquemas, Detalles, Permisos y Áreas de trabajo.

Sql

Ejecute el siguiente comando SQL en un cuaderno o en el editor de Databricks SQL. Los elementos entre corchetes son opcionales. Reemplace el marcador de posición <catalog-name>.

Para obtener más información, consulte DESCRIBE CATALOG.

DESCRIBE CATALOG <catalog-name>;

Use CATALOG EXTENDED para obtener detalles completos.

Eliminación de un catálogo

Para eliminar (o anular) un catálogo, puede usar Explorador de catálogo o bien un comando de SQL. Para quitar un catálogo, es necesario ser su propietario.

Explorador de catálogos

Debe eliminar todos los esquemas del catálogo excepto information_schema para poder eliminar un catálogo. Esto incluye el esquema default creado automáticamente.

  1. Inicie sesión en un área de trabajo vinculada al metastore.
  2. Haga clic en el Catalog iconCatálogo.
  3. En el panel Catálogo, a la izquierda, haga clic en el catálogo que desea eliminar.
  4. En el panel de detalles, haga clic en el menú de tres puntos situado a la izquierda del botón Crear base de datos y seleccione Eliminar.
  5. En el cuadro de diálogo Eliminar catálogo, haga clic en Eliminar.

Sql

Ejecute el siguiente comando SQL en un cuaderno o en el editor de Databricks SQL. Los elementos entre corchetes son opcionales. Reemplace el marcador de posición <catalog-name>.

Para descripciones de parámetro, consulte DROP CATALOG.

Si usa DROP CATALOG sin la opción CASCADE, debe eliminar todos los esquemas del catálogo excepto information_schema para poder eliminarlo. Esto incluye el esquema default creado automáticamente.

DROP CATALOG [ IF EXISTS ] <catalog-name> [ RESTRICT | CASCADE ]

Por ejemplo, para eliminar un catálogo denominado vaccine y sus esquemas:

DROP CATALOG vaccine CASCADE

Administración del catálogo predeterminado

Se configura un catálogo predeterminado para cada área de trabajo habilitada para Unity Catalog. El catálogo predeterminado permite realizar operaciones de datos sin especificar un catálogo. Si omite el nombre del catálogo de nivel superior cuando lleva a cabo operaciones de datos, se asume el uso del catálogo predeterminado.

Un administrador del área de trabajo puede ver o cambiar el catálogo predeterminado mediante la interfaz de usuario de configuración de administración. También puede establecer el catálogo predeterminado para un clúster mediante una configuración de Spark.

Los comandos que no especifican el catálogo (por ejemplo, GRANT CREATE TABLE ON SCHEMA myschema TO mygroup) se evalúan para el catálogo en el orden siguiente:

  1. ¿El catálogo está establecido para la sesión mediante una instrucción USE CATALOG o una configuración de JDBC?
  2. ¿Está establecida la configuración de Spark spark.databricks.sql.initial.catalog.namespace en el clúster?
  3. ¿Hay un catálogo predeterminado del área de trabajo establecido para el clúster?

Configuración predeterminada del catálogo cuando Unity Catalog está habilitado

El catálogo predeterminado que se configuró inicialmente para el área de trabajo depende de cómo se haya habilitado el área de trabajo para Unity Catalog:

  • Para algunas áreas de trabajo que se habilitaron automáticamente para el Catálogo de Unity, el catálogo de área de trabajo se estableció como catálogo predeterminado. Consulte Habilitación automática de Unity Catalog.
  • Para todas las demás áreas de trabajo, el catálogo de hive_metastore se estableció como catálogo predeterminado.

Si va a realizar la transición del metastore de Hive a Unity Catalog dentro de un área de trabajo existente, normalmente tiene sentido usar hive_metastore como catálogo predeterminado para evitar que afecte al código existente que hace referencia al metastore de Hive.

Cambiar el catálogo predeterminado

Un administrador del área de trabajo puede cambiar el catálogo predeterminado del área de trabajo. Cualquier persona con permiso para crear o editar un clúster puede establecer un catálogo predeterminado diferente para el clúster.

Advertencia

Cambiar el catálogo predeterminado puede interrumpir las operaciones de datos existentes que dependen de él.

Para configurar un catálogo predeterminado diferente para un área de trabajo:

  1. Inicie sesión en el área de trabajo como administrador del área de trabajo.
  2. Haga clic en el nombre de usuario situado en la parte superior del área de trabajo y seleccione Configuración de administrador en la lista desplegable.
  3. Haga clic en la pestaña Opciones avanzadas.
  4. En la fila Catálogo predeterminado para el área de trabajo, escriba el nombre del catálogo y haga clic en Guardar.

Reinicie los almacenes y clústeres de SQL para que el cambio surta efecto. Todos los almacenamientos y clústeres de SQL nuevos y reiniciados usarán este catálogo como valor predeterminado del área de trabajo.

También se puede invalidar el catálogo predeterminado de un clúster específico estableciendo la siguiente configuración de Spark en el clúster. Este método no está disponible para los almacenes de SQL:

spark.databricks.sql.initial.catalog.name

Para obtener instrucciones, consulte Configuración de Spark.

Ver el catálogo predeterminado actual

Para obtener el catálogo predeterminado actual para el área de trabajo, puede usar una instrucción SQL en un cuaderno o una consulta del Editor de SQL. Un administrador del área de trabajo puede obtener el catálogo predeterminado mediante la interfaz de usuario de configuración de administrador.

Configuración de administrador

  1. Inicie sesión en el área de trabajo como administrador del área de trabajo.
  2. Haga clic en el nombre de usuario situado en la parte superior del área de trabajo y seleccione Configuración de administrador en la lista desplegable.
  3. Haga clic en la pestaña Opciones avanzadas.
  4. En la fila catálogo predeterminado del área de trabajo, verá el nombre del catálogo.

Sql

Ejecute el comando siguiente en un cuaderno o una consulta del Editor de SQL que se ejecuta en un clúster compatible con Unity Catalog o un almacén de SQL. El catálogo predeterminado del área de trabajo se devuelve siempre que no se haya establecido ninguna instrucción USE CATALOG o configuración de JDBC en la sesión y siempre que no se establezca ninguna configuración spark.databricks.sql.initial.catalog.namespace para el clúster.

SELECT current_catalog();