Una ración de Polybase, o cómo virtualizar datos en SQL Server 2019

Empecemos explicando qué es Polybase y porqué nos puede resultar interesante trabajar con esta nueva herramienta. Fue allá por la versión de SQL Server 2016 cuando Microsoft introdujo la posibilidad de conectarse tanto a Hadoop como a Azure Blob Storage, y utilizar TSQL para realizar consultas desde nuestro SQL Server. Ya estuviera on premise o alojado en una máquina virtual.

Esta ventaja ha ido mejorando y en la actualidad, si utilizamos SQL Server 2019, podremos conectarnos fácilmente tanto a Oracle como Teradata y MongoDB. Es decir, podemos tener en un único lugar, la información accesible sin necesidad de mover los datos de un lugar a otro. Además de poder trabajar con distintos formatos de ficheros e incluso con datos más o menos estructurados. Interesante, ¿verdad?

En este artículo, voy a seguir los pasos descritos en la documentación de Microsoft, pero añadiendo capturas de pantalla y utilizando una Máquina Virtual en Azure. La idea es conectar un contenedor de Azure Blob Storage, donde guardo un dataset de entrenamiento de un modelo predictivo en formato .csv, con mi SQL Server 2019 Enterprise recién creada en la Máquina Virtual de Azure con Microsoft Server 2019. Empecemos.

Para ello, lo primero es ir a tu cuenta de Azure y crear un nuevo recurso. En nuestro caso, una Azure SQL sobre un servicio de Máquina Virtual. Seleccionamos y pulsamos sobre crear.

Configuro las características de la Máquina Virtual y continúo hasta completar la instalación.

NOTA: es importante que, cuando configures la conexión desde SSMS, marques la opción Trust server certificate como True, o recibirás mensajes de error en la conexión.

Por defecto en esta Máquina Virtual no tenemos instaladas las características de Polybase, con lo que deberemos realizar el proceso completo. Genial, ¡vamos a ello!
Tendremos que buscar el SQL Server Installation Center y desde el menú de instalación, pulsar sobre añadir nuevas funcionalidades. Ahí localizaremos la casilla de Polybase Query Services for External Data y lo seleccionaremos. En mi caso, también incluí el conector de HDFS.

Pulsamos sobre Next y seleccionamos la opción de usar SQL Server como una instancia independiente.

Pulsamos sobre Next e instalamos el JRE, aunque también dispone de la alternativa a localizar una versión diferente.

Volvemos a pulsar sobre Next, y configuramos los nombres de las cuentas.

Pulsamos Next por última vez y nos lleva a la pantalla de revisión. Ya sólo quedaría pulsar sobre Install.

Una vez terminado el proceso satisfactoriamente, nos debe mostrar la siguiente pantalla. Pulsamos sobre Close y a seguir.

Terminada esta parte, ya podemos centrarnos en SSMS y comenzar a escribir TSQL. En primer lugar, habilitar Polybase. Para ello escribimos el siguiente código y ejecutamos.

Mediante el siguiente código, verificamos que la funcionalidad está correctamente habilitada. Como vemos, el resultado devuelto es 1, lo que significa que está operativo.

Llegados a este punto, debemos habilitar las reglas del Firewall de Windows. Para ello las localizamos en la sección Inbound Rules y procedemos.

Ahora sólo nos queda ver qué fichero queremos vincular mediante Polybase a nuestra SQL Server 2019. Para este ejemplo, usaremos un dataset de DataCamp para la predicción de abandono.

De aquí, debemos conocer el path del fichero y la clave de la cuenta de almacenamiento. Esta Key se encuentra en la sección de Claves de Acceso del Blob Storage, como puedes observar en la imagen (key1).

En este momento ya tenemos operativa la nueva funcionalidad de virtualización en la instancia de SQL Server 2019 y conocemos la Key de acceso y el Path de nuestro fichero. Es decir, estamos a un paso de poder usar Polybase para lanzar queries escritas en TSQL sobre recursos en Azure. ¡Veamos cómo!

Lo primero es que desde SSMS configuremos la conectividad con Azure Blob Storage, eso se realiza mediante el siguiente script TSQL.

Este paso es importante para que nuestra instancia de SQL Server 2019 se actualice e incluya la nueva característica. Para ello, debemos ir a nuestro Service y restaurar el servicio de SQL Server (MSSQLSERVER)

Ahora creamos nuestra Master Key

Tras la Master key, creamos la credencial a nuestro Blob Storage. Aquí debemos incluir la Key de conexión a nuestro Blob Storage. El siguiente paso es crear el origen de datos externo indicando dirección del recurso y pasando la credencial previamente configurada.

Los últimos pasos que nos quedarían son definir el formato de nuestro fichero y crear la tabla externa. En este caso el fichero es tipo .csv con delimitador ‘,’

En esta última imagen vemos que en la creación de la tabla externa se toma como localización el path del fichero, y la fuente de datos y el formato previamente creados. Con todo esto, sólo quedaría hacer un SELECT y ahí está. veremos el contenido de nuestro fichero directamente en nuestra consola de SSMS.

CONCLUSIÓN
Personalmente creo que es un acierto ofrecer la posibilidad de consultar directamente desde tu instancia de SQL Server datos externos. Esto evita su movimiento, así como costes asociados y tiempo. Me gusta mucho haber utilizado este dataset, puesto que es uno de los que está vinculado, también como fuente externa, a mi Workspace de Azure ML. Es decir, tengo un único almacenamiento, compartido por múltiples recursos dentro de mi ecosistema, sin necesidad de usar ETL y duplicar costes.

Ya sólo me queda hacer una comparativa de respuesta en tiempos de ejecución, entre sistemas, para poder evaluar correctamente su performance. Pero por funcionalidad y simplicidad en la puesta en funcionamiento, un 10.

Fuente:
Microsoft Docs [en línea] [fecha de consulta: 10 de octubre de 2020]. Disponible en: https://docs.microsoft.com/es-es/sql/relational-databases/polybase/polybase-guide?view=sql-server-ver15

Foto de portada gracias a Azamat E en Pexels

Publicado por alb3rtoalonso

Soy un enamorado del poder de los datos. Entusiasta de la mejora y formación continua.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: