¿Cómo acceder a Azure Data Lake Storage Gen2 por medio de Azure Databricks en un ambiente de desarrollo?

Publicado por

¿Alguna vez has intentado acceder a los datos que se encuentran en un servicio de almacenamiento en la nube, como Azure Data Lake Storage Gen2, por medio de Azure Databricks?, ¡Vamos a presentarte diferentes maneras de lograrlo!

Esta es la primera de una serie de publicaciones sobre cómo acceder a Azure Data Lake Storage Gen2 por medio de Azure Databricks; Abordaremos diferentes maneras de realizar la conexión entre estos servicios de Microsoft dependiendo del escenario en cuestión, y mencionaremos las ventajas que trae consigo hacer uso de cada uno de estos métodos. En esta ocasión, consideraremos un ambiente de desarrollo, pruebas o experimentación, en la segunda parte de esta serie abordaremos la cuestión de cómo conectarnos a un ADLS Gen2 en un ambiente de producción y multiusuario.

Para efectos de nuestro ejercicio, es necesario haber aprovisionado previamente una cuenta de almacenamiento en Azure Data Lake Storage Gen2, un workspace de Azure Databricks y una instancia de Azure Key Vault.

Sin duda alguna, Azure Data Lake Storage y Azure Databricks se han convertido en herramientas fundamentales para las plataformas de análisis de datos basados en la nube de Microsoft. Por su parte, Azure Data Lake Storage Gen2 (también conocido como ADLS Gen2) nos permite almacenar grandes cantidades de datos de manera centralizada, escalable y rentable, y acceder a éstos por medio de una semántica de sistema de archivos. De forma complementaria, Azure Databricks proporciona los medios necesarios para que científicos, ingenieros y analistas de datos trabajen juntos en la creación de flujos completos de trabajos de análisis sobre datos almacenados en diversas fuentes, entre estas, ADLS Gen2.

Cómo acceder a Azure Data Lake Storage Gen2 por medio de Azure Databricks en un ambiente de desarrollo:

Cuando se crea una cuenta de almacenamiento para Azure Data Lake Storage Gen2, se generan automáticamente dos claves que pueden ser usadas para autorizar el acceso a los datos que se encuentran allí, dentro del modelo de control de acceso en ADLS Gen2, este método se conoce como autorización con clave compartida (Shared Key). En un ambiente de desarrollo se puede optar por hacer uso de estas claves para acceder rápidamente al almacenamiento de ADLS Gen2 desde Databricks.

Para ver y copiar las claves de acceso de la cuenta de almacenamiento desde Azure Portal, dirígete a la cuenta de almacenamiento, en la sección Security + networking selecciona Access keys.

Observación: Aunque las claves de acceso se pueden usar directamente en el espacio de trabajo de Databricks, Microsoft recomienda usar Azure Key Vault para su administración, pues de esta manera se cuenta con una capa adicional de seguridad.

Para guardar la clave de acceso de la cuenta de almacenamiento en el almacén de claves de Azure, en Azure Portal, dirigete al servicio Key vaults, en la sección Settings selecciona Secrets y crea un secreto para la clave de acceso que copiaste en el paso anterior.

A continuación, para que el workspace de Databricks tenga acceso a los secretos almacenados en Key vault, debemos copiar y guardar el Vault URI y el Resource ID del almacén de claves:

Hecho esto, dirígete al workspace de Databricks y completa la URL de la siguiente manera: https://<databricks-instance>#secrets/createScope. Ingresa un Scope Name, elige qué usuarios pueden acceder a los secretos almacenados en Key vault, y finalmente ingresa el Vault URI y el Resource ID que guardaste en el paso anterior.

Para terminar el proceso de conexión, en un notebook de Databricks establecemos las credenciales para la autenticación, de la siguiente manera:

spark.conf.set(
      "fs.azure.account.key.storageaccountiwdemo.dfs.core.windows.net",
      dbutils.secrets.get(scope=keyvaultsecretscope", key="adlsgen2key"))

donde storageaccountiwdemo es el nombre de la cuenta de almacenamiento a la que queremos acceder, keyvaultsecretscope es el Scope Name y adlsgen2key es el nombre del secreto almacenado en Key vault que contiene la clave de acceso a la cuenta de almacenamiento.

¡Esto es todo! ahora podemos validar la conexión leyendo uno de los archivos que se encuentra almacenado en la cuenta de almacenamiento:

En este caso, container-test hace referencia a uno de los contenedores de la cuenta de almacenamiento storageaccountiwdemo, y test.csv es un archivo que se encuentra almacenado en dicho contenedor.

Para finalizar, es importante resaltar que el método de autorización con clave compartida (Shared Key) es conveniente únicamente para escenarios que no son de producción, como desarrollar o probar notebooks. Un método más seguro, y que debe usarse en ambientes de producción, es el método de autenticación mediante OAuth 2.0 con una entidad de servicio de Azure. Te contaremos cómo puedes autenticarte de esta manera desde Databricks en la segunda parte de esta serie.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *