Ja hem parlat per aquí en diverses ocasions (Big Data en AzureMachine Learning en AzureIoT en Azure) sobre solucions Big Data en Microsoft Azure, però fa relativament poc que Microsoft ens permet portar-nos dades des de Azure a SQL Server utilitzant una funcionalitat anomenada PolyBase.

PolyBase és una característica opcional de SQLServer (a partir de SQL Server 2016) que, per a una funcionalitat completa, necessita la versió Enterprise i que, en essència, possibilita llançar consultes relacionals que accedeixin a estructures de dades emmagatzemades fora del nostre servidor SQL.

Suporta escalabilitat i per això disposem de diferents opcions d’instal·lació depenent de si necessitarem un únic node (Head Node) o un grup d’escalat horitzontal (Scale-out group). L’elecció és important atès que l’única manera de canviar-la (ara com ara) és desinstal·lant i tornant a instal·lar.

La instal·lació crea 2 serveis en l’equip i, en instal·lació Scale-out, un conjunt de regles de firewall per permetre les connexions entrants.

Detall dels serveis que instal·la Polybase

Hem d’especificar els orígens de dades amb els quals necessitarem connectivitat des de Polybase.

sp_configuri 'hadoop connectivity', 7

GO 

RECONFIGURE 

GO

El codi numèric especifica si la connectivitat és contra Hadoop (amb el proveïdor de Hortonworks o de Cloudera) o Azure BLOBStorage. Pots consultar els codis aquí. cal destacar que, encara que alguns codis són per a múltiples orígens de dades, no existeix un valor comodí que els suport tots, això sí, podem canviar de fonts de dades executant un nou comando sp_configuri tantes vegades com sigui necessari.

Per comprovar que la funcionalitat ha estat correctament instal·lada es pot llançar la següent consulta que ha de retornar com resultat el valor 1.

SELECT SERVERPROPERTY ('IsPolybaseInstalled')

A continuació, procedirem a crear els objectes SQL necessaris per apuntar a la nostra font de dades. Òbviament, la configuració és diferent (lleugerament) en funció del tipus d’origen, però en qualsevol cas caldrà crear els següents objectes:

– CREDENTIAL amb la clau d’accés al BLOBStorage o la contrasenya del clúster
– EXTERNAL DATA SOURCE que anotació al BLOBo a Hadoop.
– EXTERNAL FILE FORMAT per especificar el format del fitxer.
– EXTERNAL TABLE per especificar els noms dels camps i els seus tipus de dades.
– STATISTICS per dur a terme les optimitzacions de les consultes.

A partir d’aquest moment podrem llançar consultes contra la font externa i fins i tot exportar informació des de la Base de dades local cap al repositori (o repositoris) que hàgim configurat. Una dels avantatges és que, una vegada configurat, la sintaxi és 100% transparent i podrem executar les consultes SQL utilitzant les clàusules habituals JOIN, WHERE, ORDER BY, …

D’altra banda, la utilització d’aquests repositoris massius externs sobre els quals executem consultes per recuperar subconjunts d’informació té una limitació de rendiment a tenir molt en compte i és que, en el cas que les consultes no siguin massa selectives, el temps de resposta pot fer-les inviables. Si al contrari, recuperem un petit percentatge del total, el resultat pot ser francament interessant ja que la consulta (excepte en el cas dels repositoris BLOB Storage) pot processar-se i filtrar-se en l’origen perquè, d’aquesta manera, el tràfic de dades sigui el mínim necessari.

Per poder filtrar les dades directament en Hadoop, Microsoft ha implementat una tècnica anomenada Pushdown computation. Aquesta tècnica permet que les cerques que compleixin certes condicions en els seus filtres, s’executin en Hadoop. Essencialment, aquestes condicions tenen a veure amb els tipus de dades especificades en la clàusula WHERE i els operadors implicats. El Pushdown crea Jobs de tipus MapReduce para així poder esprémer al màxim les capacitats de processament distribuït dels clústers Hadoop.

En definitiva, PolyBase ens permet integrar dades del núvol amb dades locals en la mateixa solució sense haver d’importar/exportar/refrescar amb una determinada periodicitat, garantint d’aquesta manera que podrem disposar de dades fresques i en temps real perquè les anàlisis siguin més ràpids i realistes.

Per poc més de 1€/h pots tenir funcionant un clúster Hadoop amb 4 màquines A3 per dur a terme diferents simulacions i proves de concepte que t’ajudin a determinar configuracions òptimes, llindars i viabilitat de la solució.

L’accés a BLOB resulta molt més econòmic ja que pots disposar d’1 TB a partir d’uns 10€ mensuals (depenent del nombre d’accessos que realitzis al repositori).

Si vols qualsevol dels dos possibles escenaris a cost zero, sempre pots crear un compte de prova amb 170€ de crèdit a consumir en 30 dies. També tens una prova de SQL ServerEnterprise totalment operativa durant 6 mesos. Recorda que a partir d’aquesta versió, Microsoft ha separat el cicle d’actualitzacions de Management Studio i per tant la descàrrega de l’entorn d’administració ha de fer-se per separat.