[Azure] Montar Data Lake como disco entorno local

Montando mi data lake como un disco externo!!

¡Hola a todos! En esta ocasión quiero escribir sobre algo que me pareció super útil para tener en cuenta al momento de trabajar con (casi) cualquier storage en la nube. Con este procedimiento podemos montar nuestro storage como si fuera un disco más dentro de nuestra pc, lo cual facilita muchísimo no solo explorarlo sino también interactuar con el tanto para subir archivos como para leer archivos.

La Magia

Para lograrlo vamos a servirnos de un hermoso proyecto Open Source llamado Rclone, él es quien en realidad hará la magia mediante unos pocos comandos. Antes de empezar quiero aclarar que explicare el procedimiento para hacerlo en Windows, porque para Linux es incluso más fácil!

Requerimientos previos

En Windows tenemos un requerimiento en particular que es instalar WinFsp, yo elegí instalarlo con Chocolatey, por lo que si no lo tienen van a tener que instalarlo también. No se preocupen, es muy fácil solo abran una consola de PowerShell con permisos de admin y escriban:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

Esta línea la saque de la web oficial de Chocolatey https://chocolatey.org/install

Una vez instalado Chocolatey, instalamos WinFsp con la siguiente línea:

choco install winfsp --pre

Link al paquete de choco: https://chocolatey.org/packages/winfsp

¡Bien! Ya con esto instalado tenemos casi todo lo necesario para empezar, solo falta descargar Rclone, desde acá https://rclone.org/downloads/. Descargamos la versión para la versión de Windows que tengamos y descomprimimos en alguna carpeta.

Configurando nuestro acceso

Ahora sí, después de tanto programa nuevo vamos con lo que nos interesa! Como primer paso abrimos una ventana nueva de PowerShell (en este caso sin permisos de admin) y navegamos hasta la carpeta donde hayamos dejado los archivos de Rclone.

Entonces empecemos a configurar el acceso a nuestro blob storage ejecutando

.\rclone.exe config

Esto nos abrirá la configuración inicial de Rclone y nos mostrará los storage que ya tenemos configurados (al ser nuestra primera ejecución no tendremos ninguno, claro). Acá presionamos n para configurar un nuevo acceso remoto, y a continuación nos pedirá un nombre, para este ejemplo voy a usar DataLake1 asique ingreso ese nombre.

Hecho esto último, nos muestra un listado de los cloud storage que soporta la herramienta. En mi caso el blob storage de Azure es el número 22, pero esto puede variar para futuras versiones, en todo caso asegúrense de elegir el que diga Microsoft Azure Blob Storage.

Después nos va a pedir el nombre del data lake en Azure, y su account key. Dejo una foto para que sea más fácil localizar los en el portal de Azure. Get acc name and key

Después de insertar esos valores, nos ofrece la posibilidad de usar un sas_url, que sin duda es una muy buena opción ya que nos permite acceder a data lakes a los cuales podemos no tener acceso al account key, pero no es lo que utilizaremos en este ejemplo asique solo damos enter dejando en blanco. Haremos lo mismo con el paso siguiente en el cual nos dejara indicarle si estamos usando un emulador de data lake local.

Luego n para no entrar a la configuración avanzada, y q para salir del modo configuración.

Probando la conexión al lake

Para testear si todo quedo bien configurado, podemos ejecutar un simple comando ls que como en Linux, nos listara los archivos que encuentre en un directorio determinado. Para eso reemplazamos a continuación (nombre container) por el nombre del contenedor al que se quiera acceder y ejecutar:

.\rclone.exe ls DataLake1:(nombre container)

En mi caso tengo 2 contenedores para este data lake contenedores data lake

Elegí usar el primero asique mi comando queda así:

.\rclone.exe ls DataLake1:adventure-works

Si a continuación nos lista las carpetas y archivos que forman el data lake, estamos listos para seguir!

Montando nuestro lake como un disco externo

Al fin llegamos a la parte donde ocurre la magia! Estamos a solo un comando de lograrlo. En esta parte considero importante aclarar el porque de ejecutar el siguiente comando desde una ventana de PowerShell SIN permisos de admin, y esto es porque vamos a "crear" un disco externo, si hacemos esto con privilegios de admin no podremos verlo con nuestro usuario de Windows (aunque este también sea admin).

Ahora sí, sin más vueltas ejecutamos el siguiente comando:

.\rclone.exe mount DataLake1:adventure-works X:

Esto creara un disco X: que será el acceso a nuestro data lake! El disco existirá mientras no cerremos esta ventana que lo creo.

Si abrimos el explorador de archivos podremos verlo como si fuera un disco más!! La integración está muy bien hecha y en la mayoría de los casos es transparente al usuario. En este paso, una imagen vale más que mil palabras: lake mounted!!

¡La prueba de fuego!

Bueno, todo esto es muy lindo pero que utilidad práctica tiene? Lo interesante de esto es que podemos usarlo realmente como un disco más y de forma transparente descargará o subirá archivos al mismo con los mismos procedimientos que usamos para nuestros discos locales!! En mi caso hice la prueba de leer un archivo CSV con Python desde este disco externo. enter image description here

Como pueden ver, lo accedí de la misma forma que usaría si el archivo estuviera en mi computadora local! Esto es super útil, mucho más sencillo que subir archivos con la librería oficial de Microsoft (perdón, alguien tenía que decirlo) y ya se imaginaran los miles de casos de uso que puede tener esta genial herramienta.

Espero que les haya gustado, tengo en mente algunos posts más sobre los data lake asique estén atentos como siempre a LaDataWeb!!

Escrito por Martin Zurita