Conexión a una ubicación externa de Azure Data Lake Storage Gen2 (ADLS Gen2)

En esta página se describe cómo conectarse a una ubicación externa de Azure Data Lake Storage Gen2 (ADLS Gen2). Después de completar esta conexión, puede controlar el acceso a estos objetos de ADLS Gen2 mediante el catálogo de Unity.

Para conectarse a la ruta de un contenedor de ADLS Gen2, necesita dos objetos protegidos de Unity Catalog. La primera es una credencial de storage, que especifica una identidad administrada Azure que permite el acceso al contenedor de ADLS Gen2. Necesita esta credencial de almacenamiento para el segundo objeto necesario: una ubicación externa, que define la ruta de acceso a la ubicación de almacenamiento de ADLS Gen2 y las credenciales necesarias para acceder a esa ubicación.

Requirements

En Azure Databricks:

  • Área de trabajo de Azure Databricks habilitada para Unity Catalog.
  • Privilegio CREATE STORAGE CREDENTIAL en el metastore de Unity Catalog asociado al área de trabajo. Los administradores de cuentas y los administradores de metastore tienen este privilegio de forma predeterminada.
  • CREATE EXTERNAL LOCATION el privilegio tanto en el metastore de Unity Catalog como en la credencial de almacenamiento a la que hace referencia la ubicación externa. Los administradores de metastore y los administradores del área de trabajo tienen este privilegio de forma predeterminada.

En la cuenta de Azure:

  • Una cuenta de almacenamiento y un contenedor de ADLS Gen2. Para evitar cargos de salida, debe estar en la misma región que el área de trabajo desde la que desea acceder a los datos.

    • Las rutas de acceso de ubicación externa deben contener solo caracteres ASCII estándar (letras A–Z, a–zdígitos y símbolos 0–9comunes como /, _, -).

    • Las cuentas de almacenamiento de Azure Data Lake Storage que se usan como ubicaciones externas deben tener un espacio de nombres jerárquico.

    • No puede usar contenedores de almacenamiento de Azure con políticas de inmutabilidad (WORM - Write Once, Read Many) habilitadas como ubicaciones externas. El catálogo de Unity requiere permisos DELETE en contenedores de almacenamiento, lo que impiden las directivas de inmutabilidad. Para obtener más información sobre las directivas de inmutabilidad, consulte el artículo Configurar directivas de inmutabilidad para contenedores.

    • Si el acceso a la red pública está deshabilitado en la cuenta de almacenamiento, debe habilitar la opción Permitir servicios de confianza de Azure para permitir que Azure Databricks se conecte a la cuenta de almacenamiento. Puede configurar esta opción mediante la CLI de Azure:

      # Check current network rule set
      az storage account show --name <storage_account_name> --resource-group <resource_group_name> --query "networkRuleSet"
      
      # Set bypass for Azure Services
      az storage account update \
        --name <storage_account_name> \
        --resource-group <resource_group_name> \
        --bypass AzureServices
      
  • Permiso para crear un conector de acceso para Azure Databricks en la suscripción de Azure. Para ello, debe ser un Contributor o Owner de un grupo de recursos de Azure.

  • Permiso para modificar la directiva de acceso de la cuenta de almacenamiento. Para ello, debe ser el propietario o un usuario con el rol de User Access Administrator Azure RBAC en su cuenta de almacenamiento.

Creación de una credencial de almacenamiento que acceda a ADLS Gen2

Para crear una credencial de almacenamiento para acceder a un contenedor de ADLS Gen2, primero debe crear un conector de acceso para Azure Databricks con una identidad administrada y, a continuación, conceder acceso a la identidad administrada a la cuenta de almacenamiento.

Step 1: Creación de un conector de acceso para Azure Databricks

Un conector de acceso para Azure Databricks es un recurso de Azure de primera entidad que le permite conectar identidades administradas a una cuenta de Azure Databricks. Cada conector de acceso para Azure Databricks puede incluir una identidad administrada asignada por el sistema, una o varias identidades administradas asignadas por el usuario o ambas.

  1. Inicie sesión en el Azure Portal como colaborador o propietario de un grupo de recursos.

  2. Haga clic en + Crear o Crear un recurso.

  3. Busque Access Connector para Azure Databricks y selecciónelo.

  4. Haga clic en Crear.

  5. En la pestaña Aspectos básicos, acepte, seleccione o escriba valores para los campos siguientes:

    • Subscription: esta es la suscripción Azure en la que se creará el conector de acceso. El valor predeterminado es la suscripción de Azure que está usando actualmente. Puede ser cualquier suscripción en el inquilino.
    • Resource group: este es el grupo de recursos Azure en el que se creará el conector de acceso.
    • Nombre: escriba un nombre que indique el propósito del conector.
    • Región: debe ser la misma región a la que se conectará la cuenta de almacenamiento.
  6. Haga clic en Siguiente, escriba etiquetas y haga clic en Siguiente.

  7. En la pestaña Identidad Administrada, cree las identidades administradas de la siguiente manera:

    • Para usar una identidad administrada asignada por el sistema, establezca Estado en Activado.
    • Para agregar identidades administradas asignadas por el usuario, haga clic en + Agregar y seleccione una o varias identidades administradas asignadas por el usuario.

    Configurar identidades administradas para un conector de acceso.

  8. Haga clic en Revisar + crear.

  9. Revise los valores de configuración y, a continuación, haga clic en Crear.

  10. Cuando la implementación finalice, haga clic en Ir al recurso.

  11. Anote el Id. de recurso.

    El id. de recurso tiene el formato siguiente:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    

Paso 2: Conceder a la identidad administrada el acceso a la cuenta de almacenamiento

Para conceder los permisos de este paso, debe tener el Owner o User Access Administrator rol RBAC de Azure en su cuenta de almacenamiento.

Tiene las siguientes opciones al conceder a la identidad administrada acceso a la cuenta de almacenamiento y al contenedor:

  • Otorgue acceso de lectura y escritura a toda la cuenta de almacenamiento usando el rol de Storage Blob Data Contributor.
  • Conceda un rol más limitado en la cuenta de almacenamiento utilizando el rol Storage Blob Delegator y acceso de lectura y escritura a un contenedor específico utilizando el rol Storage Blob Data Contributor.

En las siguientes instrucciones se asumen que va a conceder el rol Storage Blob Data Contributor en la cuenta de almacenamiento, pero puede sustituir las otras opciones si es necesario:

  1. Inicie sesión en su cuenta de Azure Data Lake Storage.
  2. Vaya a Access Control (IAM), haga clic en + Agregar y seleccione Agregar asignación de roles.
  3. Seleccione el rol Colaborador de datos de Storage Blob y haga clic en Siguiente.
  4. En Asignar acceso a, seleccione Identidad administrada.
  5. Haga clic en +Seleccionar miembros y seleccione Conector de acceso para Azure Databricks o Identidad administrada asignada al usuario.
  6. Busque el nombre del conector o la identidad asignada por el usuario, selecciónelo y haga clic en Revisar y asignar.

Paso 3: Conceder a la identidad administrada acceso a eventos de archivo

Conceder a la identidad administrada acceso a eventos de archivos permite a Azure Databricks suscribirse a las notificaciones de eventos de archivo emitidas por proveedores de nube. Esto hace que el procesamiento de archivos sea más eficaz. Para obtener más información, consulte Configurar eventos de archivo para una ubicación externa.

Para conceder los permisos en este paso, debe tener el rol propietario o administrador de acceso de usuario Azure RBAC en su cuenta de almacenamiento.

  1. Inicie sesión en su cuenta de Azure Data Lake Storage.
  2. Vaya a Access Control (IAM), haga clic en + Agregar y seleccione Agregar asignación de roles.
  3. Seleccione el rol Colaborador de datos de cola de almacenamiento y haga clic en Siguiente.
  4. En Asignar acceso a, seleccione Identidad administrada.
  5. Haga clic en +Seleccionar miembros y seleccione Conector de acceso para Azure Databricks o Identidad administrada asignada al usuario.
  6. Busque el nombre del conector o la identidad asignada por el usuario, selecciónelo y haga clic en Revisar y asignar.

Step 4: Conceder a Azure Databricks acceso para configurar eventos de archivo en su nombre

Note

Si no concede a Azure Databricks acceso para configurar eventos de archivo en su nombre, debe configurar los eventos de archivo manualmente para cada ubicación. Omitir esta configuración manual limita el acceso a varias características de Databricks. Para obtener más información sobre los eventos de archivo, consulte Configuración de eventos de archivo para una ubicación externa.

Este paso permite a Azure Databricks configurar eventos de archivo de manera automática. Para conceder los permisos en este paso, debe tener los roles RBAC de Azure propietario o administrador de acceso de usuario en la identidad administrada y el grupo de recursos en el que se encuentra la cuenta de Azure Data Lake Storage.

  1. Siga las instrucciones en Paso 3: Conceda acceso a los eventos de archivos a la identidad administrada y asigne el rol Storage Account Contributor a su identidad administrada.

    Este rol no reemplaza los roles concedidos en los pasos 2 o 3 de esta página, sino que se añade a ellos.

  2. Vaya al grupo de recursos de Azure en el que se encuentra la cuenta de Azure Data Lake Storage.

  3. Vaya a Access Control (IAM), haga clic en + Agregar y seleccione Agregar asignación de roles.

  4. Seleccione el rol Colaborador de EventSubscription de EventGrid y haga clic en Siguiente.

  5. En Asignar acceso a, seleccione Identidad administrada.

  6. Haga clic en +Seleccionar miembros y seleccione Conector de acceso para Azure Databricks o Identidad administrada asignada al usuario.

  7. Busque el nombre del conector o la identidad asignada por el usuario, selecciónelo y haga clic en Revisar y asignar.

Paso 5: Creación de la credencial de almacenamiento en Databricks

Ahora que ha creado un conector de acceso con una identidad administrada y le ha concedido permisos a la cuenta de almacenamiento, puede crear la credencial de almacenamiento en Azure Databricks.

  1. Inicie sesión en el área de trabajo de Azure Databricks habilitada para el catálogo de Unity como usuario que tenga el privilegio CREATE STORAGE CREDENTIAL en el metastore.

  2. En la barra lateral, haga clic en Icono de datos.Catálogo.

  3. Haga clic en el icono Agregar o más y, a continuación, haga clic en Crear una credencial.

  4. Seleccione un tipo de credencial de Azure Managed Identity.

  5. Escriba un nombre de credencial de almacenamiento y un comentario opcional.

  6. Escriba el identificador del conector de Access (el identificador de recurso que anotó en el paso 1).

    El id. de recurso tiene el formato siguiente:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    
  7. (Opcional) Si creó el conector de acceso mediante una identidad administrada asignada por el usuario, escriba el identificador de identidad administrada (el identificador de recurso de la identidad administrada).

  8. (Opcional) Si quiere que los usuarios tengan acceso de solo lectura a las ubicaciones externas que usan esta credencial de almacenamiento, haga clic en Opciones avanzadas y seleccione Limitar al uso de solo lectura. Para obtener más información, consulte Marcar una credencial de almacenamiento como de solo lectura.

  9. Haga clic en Crear.

  10. (Opcional) Enlace la credencial de almacenamiento a áreas de trabajo específicas.

    De forma predeterminada, cualquier usuario con privilegios puede usar la credencial de almacenamiento en cualquier área de trabajo asociada al metastore. Si desea permitir el acceso solo desde áreas de trabajo específicas, vaya a la pestaña Áreas de trabajo y asigne áreas de trabajo. Consulte Asignación de una credencial de almacenamiento a áreas de trabajo específicas.

Ahora puede crear una ubicación externa que haga referencia a la credencial de almacenamiento.

Creación de una ubicación externa para un contenedor de ADLS Gen2

En esta sección se describe cómo crear una ubicación externa mediante el Explorador de catálogos o SQL. Se supone que ya tiene una credencial de almacenamiento que permite el acceso al contenedor de ADLS Gen2. Si no tiene una credencial de almacenamiento, siga los pasos descritos en Creación de una credencial de almacenamiento que acceda a ADLS Gen2.

Opción 1: Crear una ubicación externa manualmente mediante el Explorador de catálogos

Puede crear una ubicación externa manualmente mediante el Explorador de catálogos.

Para crear la ubicación externa:

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

  2. En la barra lateral, haga clic en Icono de datos.Catálogo.

  3. Haga clic en el icono Agregar o más y, a continuación, haga clic en Crear una ubicación externa.

  4. Escriba un nombre de ubicación externa.

  5. En Storage type, seleccione Azure.

  6. En URL, introduzca la ruta de acceso del contenedor de ADLS Gen2. Por ejemplo: abfss://mycontainer@mystorageaccount.dfs.core.windows.net/<path>.

  7. En Credencial de almacenamiento, seleccione la credencial de almacenamiento que concede acceso a la ubicación externa.

  8. (Opcional) Si desea que los usuarios tengan acceso de solo lectura a la ubicación externa, haga clic en Opciones avanzadas y seleccione Limitar a uso de solo lectura. Para obtener más información, consulte Marcar una ubicación externa como solo lectura.

  9. (Opcional) Si la ubicación externa está pensada para un catálogo federado de metastore de Hive, haz clic en Opciones avanzadas y habilita Modo de reserva.

    Consulte Habilitar modo de reserva en ubicaciones externas.

  10. (Opcional) Para habilitar la capacidad de suscribirse a las notificaciones de cambio en la ubicación externa, haga clic en Opciones avanzadas y seleccione Habilitar eventos de archivo.

    Para obtener más información, consulte Configuración de eventos de archivo para una ubicación externa.

  11. Haga clic en Crear.

  12. (Opcional) Enlace la ubicación externa a áreas de trabajo específicas.

    De forma predeterminada, cualquier usuario con privilegios puede usar la ubicación externa en cualquier área de trabajo asociada al metastore. Si desea permitir el acceso solo desde áreas de trabajo específicas, vaya a la pestaña Áreas de trabajo y asigne áreas de trabajo. Consulte Asignación de una ubicación externa a áreas de trabajo específicas.

  13. Ve a la pestaña Permisos para conceder permiso a fin de usar la ubicación externa.

    Para que cualquiera use la ubicación externa, debe conceder permisos:

    • Para usar la ubicación externa para agregar una ubicación de almacenamiento administrada al metastore, el catálogo o el esquema, conceda el privilegio CREATE MANAGED LOCATION.
    • Para crear tablas o volúmenes externos, conceda CREATE EXTERNAL TABLE o CREATE EXTERNAL VOLUME.

    Siga estos pasos:

    1. Haga clic en Conceder.
    2. En el cuadro de diálogo Conceder en <external location>, seleccione usuarios, grupos o entidades de servicio en el campo Entidades de seguridad y seleccione el privilegio que quiera conceder.
    3. Haga clic en Conceder.

Opción 2: Crear una ubicación externa mediante SQL

Para crear una ubicación externa mediante SQL, ejecute el siguiente comando en un cuaderno o en el editor de consultas SQL. Reemplace los valores de marcador de posición. Para obtener los permisos y los requisitos previos necesarios, consulte Requisitos.

  • <location-name>: nombre de la ubicación externa. Si location_name incluye caracteres especiales, como guiones (-), debe ir rodeado de acentos graves (` `). Vea Nombres.
  • <container-path>: ruta de acceso del inquilino en la nube a la que esta ubicación externa concede acceso. Por ejemplo: abfss://mycontainer@mystorageaccount.dfs.core.windows.net/.
  • <storage-credential-name>: el nombre de la credencial de almacenamiento que autoriza la lectura y escritura en el contenedor. Si el nombre de la credencial de almacenamiento incluye caracteres especiales, como guiones (-), debe ir rodeado de acentos graves (` `).
CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<container-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];

Si desea limitar el acceso de ubicación externa a áreas de trabajo específicas de la cuenta, también conocidas como enlace de área de trabajo o aislamiento de ubicación externa, consulte Asignación de una ubicación externa a áreas de trabajo específicas.

Comprobación de la conexión

Para comprobar que ha creado correctamente la ubicación externa, intente leer un archivo desde la ubicación externa. Por ejemplo, supongamos que tiene una ubicación abfss://mycontainer@mystorageaccount.dfs.core.windows.net/ externa que contiene un archivo CSV denominado example.csv. Para leer el abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv archivo, siga estos pasos:

  1. En la barra lateral, haga clic en el icono Bloc de notas.Área de trabajo.

  2. Haga clic en Crear y, a continuación, seleccione Cuaderno.

  3. Ejecute el siguiente fragmento de código Python:

    display(dbutils.fs.ls('abfss://mycontainer@mystorageaccount.dfs.core.windows.net/'))
    

    Esto muestra una lista de rutas de acceso de archivo en la ubicación externa. En este ejemplo, el abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv archivo aparece en la salida.

  4. Para leer un archivo específico en la ubicación externa, ejecute el siguiente fragmento de código Python:

    spark.read.format("csv") \
       .option("header", "true") \
       .option("delimiter", ";") \
       .load('abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv') \
       .display()
    

    Esto muestra los datos del abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv archivo.

Pasos siguientes