Vi siete mai chiesti come si possano analizzare una moltitudine di dati senza essere contemporaneamente un data analyst, un DBA, uno sviluppatore e un sistemista? La risposta è Databricks. Certo, esistono anche altri strumenti per fare lo stesso lavoro, ma difficilmente eguaglieranno la semplicità dei “mattoncini”, che tra l’altro non richiedono costose e faticose ore a configurare opzioni, rete, macchine virtuali e altre amenità visto che la loro potenza di analisi dei è veramente a portata di mano.
Sappiamo che la data analysis ci consente di fare previsioni sulle prossime elezioni così come gestire la guida autonoma delle automobili, atterrare su Marte o dare ordini vocali a un assistente digitale.
Per rimanere coi piedi per terra, non avremo robot antropomorfi che ci girano intorno indaffarati a lavorare per noi, ma possiamo aspettarci di acquistare online gli articoli più economici, in maniera più semplice e ricevendoli nel giro di pochissimo tempo proprio grazie ad analisi e algoritmi intelligenti.
La quantità di informazioni di cui disponiamo adesso è enorme e i calcolatori sono carrozzati decisamente meglio e, forse la cosa più importante, è tutto molto più accessibile grazie al software open source e all’ormai onnipresente cloud.
L’analisi dei dati
In estrema sintesi e semplificando molto si potrebbe definire l’analisi dei dati come rispondere a dei quesiti anche complessi andando alla ricerca di pattern. Il che può essere qualcosa che va dall’estremamente semplice da potersi elaborare con un foglio di calcolo, all’estremamente complesso per quale sono richiesti server e processori potenti.
Anche noi facciamo continuamente Data analysis nella nostra testa: quando osserviamo le nubi all’orizzonte e capiamo che tempo farà oppure quando siamo in grado di predire le ondate di traffico nella strada che percorriamo tutti i giorni.
Ovvero, raccogliendo dati, riferimenti e riconoscendo dei pattern riusciamo a fare delle previsioni che nel nostro caso ci faranno decidere se prendere un ombrello o cambiare strada per arrivare prima.
La stessa cosa avviene applicando la Data analysis ai computer, solo che in questo caso la raccolta è più organizzata e strutturata.
Per fare un paio di esempi, possiamo prendere le polizze di assicurazione che per l’elaborazione del rischio e dei relativi premi si basano su un’ampia serie di parametri eterogenei ma, con esempi più a portata di mano, “data analysis” sono anche i suggerimenti e le preferenze che ci arrivano dai servizi di streaming o i consigli dell’assistente digitale che ci suggerisce quando uscire di casa per arrivare puntuali all’appuntamento. Anche le previsioni del tempo che consultiamo frequentemente dal nostro smartphone rappresentano esempi di analisi complesse su modelli piuttosto sostanziosi.
La Data analysis più in grande
La chiave per svoltare nell’ambito dell’analisi di grandi quantità di elementi ci viene fornita sostanzialmente da tre importanti fenomeni: la disponibilità di un’enorme mole di informazioni non più appannaggio dei soliti noti (Google, Facebook, Amazon), la disponibilità di strumenti particolarmente innovativi e performanti nonché la possibilità di accedere a potenze di calcolo pressoché illimitate.
La diffusione di tali strumenti ad un pubblico più ampio paradossalmente ha fatto aumentare la fame di dati e di elaborazioni: il mercato ha cominciato a chiedere soluzioni e risposte a quesiti più complessi ed è stato necessario inventarsi qualcosa di ancora più sofisticato. Un singolo server verosimilmente non è più sufficiente, ma la costruzione di un datacenter con centinaia di macchine non è giustificata se ho bisogno di molta potenza di calcolo per un tempo limitato. È una questione di scalabilità: il machine learning è un buon esempio di un’applicazione che più concetti e potenza di calcolo ottiene e meglio lavora.
Ed è qui che big data, software e cloud cominciano a fare la differenza.
Alimentare i dati
Quando entriamo in un sito di e-commerce, i bit cominciano a girare immagazzinando una enorme quantità di informazioni: ciò che clicchiamo, ciò che visualizziamo, quanto tempo stiamo sulla stessa pagina, dove indugiamo col mouse e molto altro.
In generale, tutto ciò che facciamo così come ciò che non facciamo produce informazione. Se il mio smartphone mi propone una notizia, ma io non ti mostro alcun interesse, questa interazione, questo feedback alimenterà un dataset che migliorerà i suggerimenti per la volta successiva quando il sistema proverà a indicarmi qualcosa che mi piaccia di più.
Anche la semplice visita ad una singola pagina produce un minimo di qualche kilobyte se non addirittura megabyte di informazioni.
E questo flusso non è limitato all’interfaccia utente. Quasi ogni settore IT punta all’acquisizione di una sempre maggiore quantità di dati. Basti pensare all’Internet delle Cose e all’enorme numero di sensori che vengono concepiti in continuazione. Man mano che i prezzi scendono altri sensori vengono aggiunti ad orologi, camion, container, elettrodomestici. La sola industria dell’auto inserisce più di 20 miliardi di sensori all’anno, e ognuno di questi produce output migliaia di volte al secondo, ovvero oltre 140 GB al giorno. Moltiplichiamo questi numeri per quasi otto miliardi di persone e cominciamo ad avere un’idea dell’insieme di elementi con cui abbiamo a che fare.
I tool
In linea generale gli strumenti per la business intelligence non sono alla portata di tutti, soprattutto quelli proprietari, ma fortunatamente il software open source ci viene incontro. La democrazia della Data analysis passa da linguaggi come R o Python e dalla moltitudine di librerie gratuite quali OpenCV con Anaconda. E reggono bene il confronto con software commerciali anche alternative come TenSorFlow, Keras o Theano.
Esiste anche un’altra categoria di software che può darci una mano a raccogliere dati in maniera più efficiente ottimizzandoli in pezzi più piccoli, il che diventa un fattore importante nell’analisi su un panorama più ampio: anziché scalare verticalmente aggiungendo potenza di calcolo su una macchina, può essere utile distribuire su un’architettura orizzontale, ovvero su più macchine. L’idea è di distribuire il carico di lavoro in pezzetti più piccoli che si possono eseguire in parallelo, redistribuendoli su più core, utilizzando software open source quali Apache Spark o Hadoop MapReduce.
L’ambiente
C’è ancora una larga maggioranza di organizzazioni che si appoggiano a una potenza di calcolo on-premise, ma è facile osservare che molte, moltissime aziende cominciano a delegare la gestione dell’infrastruttura tecnologica a terze parti. Con il Cloud compriamo solo ciò che ci serve quando ci serve e la possibilità di scalare potenza di calcolo a piacimento senza la necessità di allestire lame, armadi, alimentatori e ridondanza ci semplifica la vita non poco.
I dati stessi, gli strumenti, il cloud computing cambiano l’approccio all’analisi di Big data
Ma anche considerando l’evidente supporto che questi tre elementi forniscono nel favorire processi intensivi di data analysis, non è semplicissimo mettere in piedi il tutto da zero. Configurare l’infrastruttura su Microsoft Azure o Amazon Web Services è semplice, ma farlo in maniera sbagliata è ancora più semplice e configurare Spark o Hadoop Core richiede comunque attenzione e una certa quantità di tecnicismi e competenze. Ed è proprio qui che Databricks può fare la differenza.
Databricks, l’applicazione pratica
L’analisi di Big data offre sicuramente uno spunto formidabile per applicazioni che un tempo sarebbero sembrate fantascienza, ma attenzione perché sullo stesso filone posso emergere utilizzi che possono rivelare un lato oscuro ai limiti dell’etico.
Un paio di esempi in tal senso sono quelli di Target e Cambridge Analytica.
All’inizio del 2012 la catena di negozi Target assurse agli onori della cronaca per aver inviato a una ragazza dei buoni sconto per l’acquisto di abiti per neonati e culle. La scena successiva è quella del padre della ragazza che irrompe nel negozio per reclamare vivacemente nei confronti del responsabile, dal momento che non aveva la più pallida idea che la figlia fosse in stato interessante, salvo scoprirlo più tardi dopo aver chiesto lumi alla diretta interessata.
Target era arrivato alle conclusioni sullo stato della ragazza analizzando le sue abitudini, gli acquisti recenti, le tempistiche. L’algoritmo non ci aveva messo molto a comprendere ciò che ai genitori non era ancora noto.
Questo genere di conclusioni è abbastanza comune per le grandi catene commerciali che possono confrontare le nostre abitudini con quelle di milioni di altri clienti ed è ancora più vero se parliamo di e-commerce.
Il caso di Cambridge Analytica ha riguardato la raccolta di milioni di profili Facebook di cittadini statunitensi, senza alcun consenso, per poterli utilizzare con l’obiettivo di influenzare il comportamento dei votanti durante le elezioni del 2016. Qualcuno sicuramente si ricorda lo scandalo e la frustrazione che l’episodio suscitò nell’opinione pubblica.
Ma esistono anche esempi virtuosi.
La Volvo utilizza milioni di sensori sui suoi camion per raccogliere in real-time informazioni sullo stato del veicolo. Questi flussi alimentano un processore che valuta se il veicolo stia per avere una qualche sorta di problema, avvisando con largo anticipo l’autista che quindi può recarsi in officina prima che il guasto si manifesti.
Anche Visa utilizza l’enorme quantità di dati proveniente dai pagamenti con le carte di credito per la ricerca di pattern che possano rilevare comportamenti fraudolenti. Nel caso l’algoritmo ritenga che si tratti di un tentativo di phishing, il pagamento viene respinto e il titolare della carta viene informato. Negli ultimi 10 anni l’utilizzo di questi sistemi di pagamento e cresciuto del 1000% mentre le truffe sono diminuite quasi del 70% e il sistema continua a perfezionarsi giorno dopo giorno.
Databricks, i “mattoncini”
Abbiamo visto come i moderni sistemi di analisi dei dati lavorino con una quantità impressionante di input, con un flusso costante che cresce di giorno in giorno a un ritmo esponenziale.
Questo flusso proviene da fonti differenti che vanno dalle indicazioni sulle vendite alle transazioni bancarie, dai social media ai sensori sui veicoli.
Le aziende lavorano con queste informazioni attraverso processi che includono trasformazioni e aggregazioni per sviluppare applicazioni che possano estrarre dei valori da queste fonti.
Ed è qui che entra in gioco Apache Spark, sviluppato per processare questa enorme massa di dati con l’aiuto di Azure Databricks che, a livello architetturale, si posiziona più in alto per governare la complessità dell’implementare questi processi unendo gli indiscutibili benefici che provengono dall’integrazione con i numerosi servizi di Azure.
Si tratta di un cluster distribuito nonché di un framework utilizzato con i big data che offre soluzioni che consentono velocità e facilità d’uso nella gestione dei cluster e il processo delle informazioni in tempo reale. Lavora molto velocemente anche su dataset particolarmente ampi grazie un’architettura che esegue un numero ridotto di letture e scritture su disco gestendo i processi in memoria.
Databricks è la soluzione su cloud che utilizza Apache Spark come backend, aggiungendo interessanti caratteristiche come sicurezza integrata, gestione automatizzata dei cluster e un’integrazione semplificata con i Data Lake.
Costruiti grazie una collaborazione tra Microsoft e il gruppo di Apache Spark, i Databricks si integrano facilmente con gli altri servizi Azure quali Blob Storage e SQL così come con i bucket Amazon S3.
Semplificano e aggiungono efficienza ai vari processi di configurazione e manutenzione dei cluster e grazie al supporto di linguaggi come Scala e Python supportano gli sviluppatori nella creazione delle pipeline ETL.
Alcuni dei “mattoni” fondamentali dei Databricks sono:
- I workspace, che racchiudono tutti gli strumenti quali jobs, notebooks, clusters, librerie, dati e modelli.
- I dati, ovviamente, che possono essere importati nel filesystem da tutta una serie di fonti sia direttamente che tramite Azure Blob Storage o AWS S3.
- I notebook, che costituiscono l’interfaccia web per far girare il codice su file e tabelle, fornendo tutta una serie di riferimenti e documentazioni che facilitano lo sviluppo condiviso di applicazioni.
- I cluster, ovvero l’insieme dei server connessi che si comportano con un singolo sistema, all’interno dei quali possono essere eseguiti vari compiti come far girare il codice interagendo con i dati memorizzati nello store o inseriti come singole tabelle. Inoltre, vengono utilizzati per profilare chi può accedere alle informazioni così come per garantire l’alta affidabilità e l’incremento delle performance.
- Le librerie scritte in Python o Scala che aggiungono ulteriori funzionalità.
Azure Databricks
Conclusioni
Abbiamo visto quindi come i Databricks siano sostanzialmente l’implementazione di Apache Spark in Azure.
Con i cluster Spark gestiti con più semplicità si possono elaborare enormi quantità di informazioni fornendo un contributo sostanziale all’ingegneria dei dati, alla loro esplorazione e visualizzazione con il contributo di strumenti di machine learning.
Abbiamo anche sottolineato come l’adozione di Databricks stia acquisendo importanza e rilevanza nel mondo dei big data per il fatto che, oltre al supporto in più lingue, il servizio ci consente di integrarci facilmente con molti servizi di Azure come Blob Storage, Data Lake Store, database SQL e strumenti di BI come Power BI, Tableau, ecc. Inoltre, è un’ottima piattaforma collaborativa che consente ai professionisti dei dati di condividere cluster e spazi di lavoro, il che porta a una maggiore produttività.
Un punto importante da considerare con le piattaforme di big data è capire se ne abbiamo davvero bisogno. A volte c’è la tentazione di sovra-ingegnerizzare le soluzioni per il gusto di “fare big data”. Tuttavia, Databricks non solo rende Spark facile, ma si adatta così bene alle piattaforme Azure e AWS che può cambiare punto di vista per cui, anche se non siamo ancora a un livello di “real big data” vale certamente la pena provare.