Conectar a un data lake desde Microsoft Fabric y copiar su contenido a un lakehouse

Table of contents

En este artículo vamos a ver como conectar a un data lake en Azure desde Microsoft Fabric y copiaremos el contenido a un lakehouse.
Registrar App
Lo primero que vamos a hacer es registrar una app en Azure. Para ello, vamos a Microsoft Entra ID → App registrations → New registration.
Especificamos el nombre de nuestra app y la registramos.
Una vez esté registrada, nos aparecerán unos datos que deberemos de guardar. Estos datos son:
Application (client) ID
Directory (tenant) ID
Ahora debemos de generar un secreto. Para ello, en el menú de la izquierda de nuestra app, clicamos en Certificates & secrets
Creamos un nuevo secreto y le asignamos un nombre. Ahora viene lo importante, debemos guardar el valor del secreto muy bien porque solo se puede ver una vez creado y lo necesitamos para poder conectar más adelante.
Permisos necesarios
El último paso para tenerlo todo listo es darle permisos a la app para poder acceder y realizar operaciones en el data lake. En Azure, accedemos a nuestra cuenta de almacenamiento y seleccionamos el contenedor (data lake). En el menú seleccionamos Access Control (IAM) → Add → Add role assignment.
En Role buscamos Storage Blob y seleccionamos Storage Blob Data Contributor y en Members buscamos el nombre de la app que hemos registrado en los pasos anteriores.
Microsoft Fabric
En Microsoft Fabric creamos un notebook con el siguiente código:
def connectStorageAcc(storage_account, appid, secretKey, directoryid):
spark.conf.set("fs.azure.account.auth.type."+storage_account+".dfs.core.windows.net", "OAuth")
spark.conf.set("fs.azure.account.oauth.provider.type."+storage_account+".dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
spark.conf.set("fs.azure.account.oauth2.client.id."+storage_account+".dfs.core.windows.net", appid)
spark.conf.set("fs.azure.account.oauth2.client.secret."+storage_account+".dfs.core.windows.net", secretKey)
spark.conf.set("fs.azure.account.oauth2.client.endpoint."+storage_account+".dfs.core.windows.net", "https://login.microsoftonline.com/"+directoryid+"/oauth2/token")
return print("Connected to storage account "+storage_account)
storage_account = "storage_account_name"
container = "data_lake_name "
appid = "your_app_id"
secretKey = "secret_value"
directoryid = "tenant_id"
connectStorageAcc(storage_account,appid,secretKey,directoryid)
file_location = "abfss://"+container+"@"+storage_account+".dfs.core.windows.net/"
list_of_folders = mssparkutils.fs.ls(file_location)
for f in list_of_folders:
file_path = f.path
mssparkutils.fs.mv(file_path, 'Files', True)
El Código se conecta al data lake y mueve todo lo que se encuentre en la ruta file_location. En este ejemplo, se mueven todas las carpetas y lo que hay en su interior del data lake al lakehouse.
Data Lake:
Lakehouse:
Subscribe to my newsletter
Read articles from Kilian Baccaro Salinas directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
