En posts anteriores, vimos que era un pipeline y una actividad. Una de las actividades disponibles en Azure Data Factory es la de ejecución de un U-SQL script de Azure Data Lake. Hoy veremos como hacer una extracción y transformación de datos en Azure Data Factory con Azure Data Lake Analytics.

¿Qué es U-SQL?

U-SQL es un nuevo lenguaje usado en Azure Data Lake Analytics, que combina todo lo bueno de SQL con la potencia de C# para poder extraer y transformar los datos en un pipeline de Azure Data Factory. Con estos scripts, podremos analizar y procesar tanto datos relacionados (de SQL, por ejemplo) como de almacenes de datos no estructurados.

Con un script U-SQL vamos a poder, por ejemplo, filtrar un fichero tsv por un valor determinado y devolver otro fichero tsv con los registros filtrados o, por ejemplo, usar un extractor para serializar un json y devolverlo en un fichero csv.

Caso Práctico

Para comenzar, crearemos el servicio de Azure Data Lake Analytics en nuestro grupo de recursos:

A continuación, asociado al servicio de Data Lake Analytics hay que crear un Azure Data Lake Store, que se usará para almacenar los ficheros que usaremos como orígenes de datos y también para registrar las assemblies que se van a usar para la extracción custom de datos de un json en un futuro post.

Vamos a ver como extraer datos de un fichero tsv, filtrar los datos por alguna condición y generar un nuevo tsv como fichero de salida. La extracción de datos de un tsv se puede hacer sin ningún custom extractor.

Para el filtrado de ficheros tsv, podemos usar el siguiente script U-SQL.

Con este script y un nuevo pipeline en Azure Data Factory, podremos realizar todo el proceso.

Creamos un pipeline con una actividad de tipo U-SQL.

Será necesario también crear un nuevo linked service para conectar con Azure Data Lake Analytics y otro linked service para conectar con Azure Data Lake Storage.

El linked service con Azure Data Lake Analytics vimos cómo crearlo en un post anterior, por lo que solo detallo como crear el linked service al Storage.

Para ello, nos vamos a añadir un nuevo linked service y completamos los detalles.

Si probamos la conexión, veremos que tenemos un error, ya que el Azure Data Lake Storage está bloqueando la conexión tanto por el firewall como por los permisos.

Permisos

Vamos a dar permisos:

Damos acceso de lectura, escritura y ejecución al ADF en el Azure Data Lake Storage:

Vamos al firewall y habilitamos el acceso a los servicios de Azure.

Una vez hecho esto, volvemos a probar la conexión y veremos que termina de forma satisfactoria.

Una vez configurado todo, vamos a necesitar:

  • Almacenar el script para poder ser lanzado desde ADF. Para ello, podemos usar la cuenta de almacenamiento en la que alojábamos ficheros en anteriores posts. Crearemos un contenedor llamado Scripts y subiremos el script indicado al inicio.
  • Almacenar el tsv inicial. Usaremos Azure Data Lake Storage, creando una nueva carpeta llamada rawdata, donde subiré el fichero tsv original. Dejaré otra carpeta llamada preparedata para volcar el fichero filtrado final.

Por lo tanto, solo falta configurar el pipeline de extracción creado inicialmente, con los parámetros de entrada necesarios del script y la ubicación del script U-SQL.

Resultado

Lanzamos una ejecución y tras ver en el monitor que finalizó con éxito, podremos ver el nuevo tsv en la carpeta de prepared ya filtrado.

La actividad de ADF lo que hace internamente es lanzar un job en Azure Data Lake Analytics, por lo que, si queremos ver más detalle, podemos navegar al servicio y ver el detalle de la ejecución del job.

Con todo esto, queda vista la extracción de datos en Azure Data Factory.

En el siguiente post, veremos cómo hacer una extracción de datos, pero ya con extractores custom.

Última modificación: febrero 18, 2021

Autor