SlideShare a Scribd company logo
#sqlsat
Event processing with Spark
Alessio Biasiutti
Alessio Biasiutti
Azure Solution Architect
Microsoft P-TSP
alessiobiasiutti
abiasiutti@altitudo.com
Agenda
▪ EventHub
▪ Concetti Base
▪ Kafka
▪ Spark
▪ Concetti base
▪ Databricks
▪ Spark SQL
▪ Demo
▪ Spark Structured Streaming
▪ Connettore Spark per Event Hub
▪ Connettore Spark Per Cosmos DB
▪ Demo
▪ Q&A
Architecture
EventHub (Kafka
mode)
EventHub
Concetti base
▪ Dimensione messaggio 256K-1M
(dedicated)
▪ Protocolli
▪ HTTPS: overhead ogni invio dati (TLS)
migliore per invio dati non frequente.
▪ AMQP: inizializzazione sessione pesante ma
performance migliori per invio dati frequenti
▪ Capture file su Storage Account o su Data
Lake Store
▪ Streaming Unit
▪ Ingress Fino a 1MB/sec o 1000 eventi/sec
▪ Egress Fino a 2MB/sec o 4096 eventi/sec
▪ Retention: 1-7 giorni
Concetti base
• Partitions:
• Permettano di scalare orizzontalmente.
• Un event receiver per ogni partizione
• Numero fisso alla creazione tra 2 e 32
• Impostazione solo in fase di creazione
• Partition key:
• Assegnato dal publisher viene utilizzato per
inviare i dati sempre alla stessa partizione
• Nessun valore Round Robin
• Consumer Group:
• Uno per applicazione receiver
• Checkpoint
• Responsabilità del receiver eseguire commit
dell’ultima posizione letta
Kafka mode
• Supporto per versione Kafka 1.0 o maggiori
• Funzioni non supportate
• Idempotent producer
• Transaction
• Compression
• Size-based retention
• Log compaction
• Adding partitions to an existing topic
• HTTP Kafka API support
• Kafka Streams
Kafka Concept Event Hubs Concept
Cluster Namespace
Topic Event Hub
Partition Partition
Consumer Group Consumer Group
Offset Offset
Configurazione
Apache Spark
Introduzione
Spark core engine
Spark SQL
Interactive
queries
Spark Structured
Streaming
Stream processing
Spark MLlib
Machine
learning
GraphX
Graph
computation
Pipeline
In pipeline complesse lo scambio dati tra engine diversi
potrebbe essere molto costo
Spark Streaming
Machine
learning
Spark SQL
Performance
102,5 100
72
23
2100
206
50400
6592
2013 Record
(Hadoop)
Spark 100 TB
Data Size (TB) Time (Min) Nodes Cores
tinyurl.com/spark-sort
Logistic regression
140
120
100
80
40
20
0
60
Hadoop
Spark 0.9
Logistic regression on a 100-node cluster with 100
GB of data.
Spark is the 2014 Sort Benchmark
winner.
3x faster than 2013 winner
(Hadoop).
Distribuzioni
Read Read
Concetti base
• Il driver esegue le funzioni utente
dividendelo in operazioni parallele
nei vari worker node
• Il driver recupera i risultati delle
varie operazioni
• I worker nodes leggono e scrivono
dati da e verso il filesystem
Hadoop (HDFS or DBFS on Azure
Storage Account)
• I worker node mettono in cache
parte dei dati letti
Read
Cluster manager
HDFS
Worker nodeWorker node Worker node Worker node
Driver program
SparkSession (SparkContext)
Cluster
Cluster
Head node
Spark master
App 0 App 1 App 2
Browser Gateway
Spark
submit
Zeppelin Jupyter
Worker node 2
Worker 2
Worker node 1
Worker 1
Job
Task
Task
Spark driver
Spark
context
Dataset
Dataset
Job
Task
Task
Worker node 3
Worker 3
Job
Task
Task
Worker node 4
Worker 4
Job
Task
Task
Databricks
1) Creare un workspace
2) Creare un cluster
3) Creare un notebook
SparkSession
• Punto di accesso
all’applicazione e a tutte le
funzionalità del cluster
• Prima della versione 2
esistevano tanti
SparkContext per ogni
funzionalità
Spark SQL
Spark SQL è un motore fortemente ottimizzato per poter eseguire query SQL sui
dati.
Quando si esegue una query il risultato viene ritornato come Dataset/DataFrame
• Un Dataset è un collezione di dati distribuita. Questa interfaccia è stata
introdotta dopo la versione 1.6
• Un DataFrame è un dataset organizzato in colonne. Concettualmente è
equivalente ad un tabella di un database relazionale o di un data frame in
R/Python
Spark SQL
1) Leggere dati da fonti esterne e
formati diversi
2) Eseguire query
• SQL
• Functions
3) Salvare i dati all’interno del cluster
4) Salvare i dati su destinazioni
esterne
• Connecting to SQL
Databases using JDBC
• Amazon Redshift
• Amazon S3
• Amazon S3 Select
• Azure Blob Storage
• Azure Data Lake
Storage Gen1
• Azure Data Lake
Storage Gen2
• Azure Cosmos DB
• Azure SQL Data
Warehouse
• Cassandra
• Couchbase
• ElasticSearch
• Import Hive Tables
• MongoDB
• Neo4j
• Oracle
• Avro Files
• CSV Files
• JSON Files
• LZO Compressed
Files
• Parquet Files
• Redis
• Riak Time Series
• Snowflake
• Zip Files
Demo
Workspace
Cluster
Notebook
Spark SQL
Structured Streaming
Structured Streaming è il modulo di Stream Processing
costruito sul motore Spark SQL
Permette di eseguire analisi sui dati stream allo stesso
modo con cui si analizzano i dati batch
• Aggregations
• event-time windows
• stream-to-batch joins
Concetti Base
L’idea è di trattare un data
stream come se fosse una
tabella in cui vengono
inserite continuamente
delle righe alla fine
In questo modo si possono
eseguire dei comandi SQL
come se fosse una tabella
Concetti base
• Ad ogni trigger le nuove righe vengono
aggiunte alla «Input Table»
• Una query sull’imput può generare un dei
nuovi dati nella tabella Result
• Ogni volta che la tabella «Result» viene
aggiornata vengono scritti in output i dati:
• Complete Mode: tutta la tabella (compito
del connettore decidere come gestire la
scrittura)
• Append Mode: solo le nuove righe (si
suppone che non ci siano updates)
• Update Mode: vengono inviate tutte le righe
aggiorate
• Non mantiene in memoria tutta la tabella di
input ma solo i dati che servono a calcolare la
query
Input
• File
• Azure Blob Storage
• Socket
• Rate Source (test data)
• Apache Kafka
• Amazon Kinesis
• Optimized S3 File Source with SQS
• Azure Event Hubs / IoT Hub
Input - File
File Source: permette di leggere dati da file comse se fossero uno stream:
• path: il path di dove si trovano i file
• maxFilesPerTrigger: massimo numero di file per trigger (default no max)
• lastestFirst: se processare l’ultimo file per primo
• format: il formato dei dati (parquet,…)
In caso di input non strutturato o semi strutturato, per garantire uno schema consistente durante
l’esecuzione delle query, bisogna definire il formato dell’input.
val userSchema = new StructType().add("name", "string“, true).add("age",
"integer“,true)
StructField params:
• name
• datatype
• nullable
Input - File
Input – Event Hub
Connection Options:
• consumerGroup – nome del consumer
group
• startingPosition – la posizione da cui
partire
• EventPosition.fromOffset("246812")
• EventPosition.fromEnqueuedTime(Inst
ant.now)
• EventPosition.fromStartOfStream
• EventPosition.fromEndOfStream
• maxEventsPerTrigger – il numero
massimo di eventi per trigger
Column Type
body binary
partition string
offset string
sequenceNumber long
enqueuedTime timestamp
publisher string
partitionKey string
properties map[string, json]
systemProperties map[string, json]
Input – Event Hub
Input – Event Hub
Window operations
Nome campo per
riferimento del
tempo
Ampiezza
Finestra
Frequenza
aggiornamento
Windows operations
Late data
Watermarking
Limiti:
• L’aggregazione deve avere almeno una finestra o deve essere aggregata per un
campo temporale
• Nome del campo «tempo» deve essere lo stesso di quello specificato in
window
• Output mode deve essere Append o Update
Late data and Watermarking
Join
Stream – Static Joins
(inner e alcuni tipi di outer join)
Join params:
• dataset
• join condition
• tipo (inner/outer)
Stream Stream join
Trigger
• Il trigger specifica quando frequentemente vengono
letti i dati dall’input per essere accumulati.
• Ad ogni trigger vengono inviati dei dati alla result table
• Default 0ms (appena finisce l’esecuzione parte la
successiva)
• 2 tipi
• RunOnce (esecuzione della query una volta es
schedulata)
• Schedulati
Output
Tipi di output
• Memory (Solo per test)
• Kafka
• EventHub
• File
• Azure Blob
• Sink Custom
Sink Custom
Checkpoint
In caso di failures o shutdown è possibile recuperare
lo stato della query e continuare da dove si era
fermata.
Gestione
Connettore Spark – Cosmos DB
Connettore Change Feed
Cosmos DB Library
Demo
Structured Streaming
Q&A
Grazie!
Siete interessati alla nostra consulenza?
https://www.altitudo.com/
Vi piacerebbe far parte del nostro staff?
jobs@altitudo.com

More Related Content

What's hot

SQL Server Failover Cluster Instances con Azure Managed Disks
SQL Server Failover Cluster Instances con Azure Managed DisksSQL Server Failover Cluster Instances con Azure Managed Disks
SQL Server Failover Cluster Instances con Azure Managed Disks
Gianluca Hotz
 
Cloud storage in azienda: perche` Riak ci e` piaciuto
Cloud storage in azienda: perche` Riak ci e` piaciutoCloud storage in azienda: perche` Riak ci e` piaciuto
Cloud storage in azienda: perche` Riak ci e` piaciuto
BioDec
 
SAL 2018 - DevOps
SAL 2018 - DevOpsSAL 2018 - DevOps
SAL 2018 - DevOps
Mauro Sanfilippo
 
The Google File System
The Google File SystemThe Google File System
The Google File System
Alessandra Zullo
 
Data grid
Data gridData grid
Data grid
Ugo Landini
 
Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Codemotion
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizio
MongoDB
 
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...MongoDB
 
Best Practices on SQL Server
Best Practices on SQL ServerBest Practices on SQL Server
Best Practices on SQL Server
Gianluca Hotz
 
SQL Server Modern Query Processing
SQL Server Modern Query ProcessingSQL Server Modern Query Processing
SQL Server Modern Query Processing
Gianluca Hotz
 
Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Emanuele Zanchettin
 
Back to Basics webinar 1 IT 17 - Introduzione ai NoSQL
Back to Basics webinar 1 IT 17 - Introduzione ai NoSQLBack to Basics webinar 1 IT 17 - Introduzione ai NoSQL
Back to Basics webinar 1 IT 17 - Introduzione ai NoSQL
MongoDB
 
Benchmarking Cloud Native PostgreSQL
Benchmarking Cloud Native PostgreSQLBenchmarking Cloud Native PostgreSQL
Benchmarking Cloud Native PostgreSQL
EDB
 
Big Data Infrastructures - Hadoop ecosystem, M. E. Piras
Big Data Infrastructures - Hadoop ecosystem, M. E. PirasBig Data Infrastructures - Hadoop ecosystem, M. E. Piras
Big Data Infrastructures - Hadoop ecosystem, M. E. Piras
CRS4 Research Center in Sardinia
 
Quanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless SynapseQuanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless Synapse
Marco Pozzan
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
Emanuele Zanchettin
 
Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)
Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)
Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)
MongoDB
 
Cloud Native PostgreSQL - Italiano
Cloud Native PostgreSQL - ItalianoCloud Native PostgreSQL - Italiano
Cloud Native PostgreSQL - Italiano
EDB
 
Alfresco Day Roma 2015: Big Repository
Alfresco Day Roma 2015: Big RepositoryAlfresco Day Roma 2015: Big Repository
Alfresco Day Roma 2015: Big Repository
Alfresco Software
 

What's hot (19)

SQL Server Failover Cluster Instances con Azure Managed Disks
SQL Server Failover Cluster Instances con Azure Managed DisksSQL Server Failover Cluster Instances con Azure Managed Disks
SQL Server Failover Cluster Instances con Azure Managed Disks
 
Cloud storage in azienda: perche` Riak ci e` piaciuto
Cloud storage in azienda: perche` Riak ci e` piaciutoCloud storage in azienda: perche` Riak ci e` piaciuto
Cloud storage in azienda: perche` Riak ci e` piaciuto
 
SAL 2018 - DevOps
SAL 2018 - DevOpsSAL 2018 - DevOps
SAL 2018 - DevOps
 
The Google File System
The Google File SystemThe Google File System
The Google File System
 
Data grid
Data gridData grid
Data grid
 
Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizio
 
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
Creating Highly-Available MongoDB Microservices with Docker Containers and Ku...
 
Best Practices on SQL Server
Best Practices on SQL ServerBest Practices on SQL Server
Best Practices on SQL Server
 
SQL Server Modern Query Processing
SQL Server Modern Query ProcessingSQL Server Modern Query Processing
SQL Server Modern Query Processing
 
Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2
 
Back to Basics webinar 1 IT 17 - Introduzione ai NoSQL
Back to Basics webinar 1 IT 17 - Introduzione ai NoSQLBack to Basics webinar 1 IT 17 - Introduzione ai NoSQL
Back to Basics webinar 1 IT 17 - Introduzione ai NoSQL
 
Benchmarking Cloud Native PostgreSQL
Benchmarking Cloud Native PostgreSQLBenchmarking Cloud Native PostgreSQL
Benchmarking Cloud Native PostgreSQL
 
Big Data Infrastructures - Hadoop ecosystem, M. E. Piras
Big Data Infrastructures - Hadoop ecosystem, M. E. PirasBig Data Infrastructures - Hadoop ecosystem, M. E. Piras
Big Data Infrastructures - Hadoop ecosystem, M. E. Piras
 
Quanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless SynapseQuanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless Synapse
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
 
Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)
Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)
Back to Basics 4: Introduzione al partizionamento orizzontale (sharding)
 
Cloud Native PostgreSQL - Italiano
Cloud Native PostgreSQL - ItalianoCloud Native PostgreSQL - Italiano
Cloud Native PostgreSQL - Italiano
 
Alfresco Day Roma 2015: Big Repository
Alfresco Day Roma 2015: Big RepositoryAlfresco Day Roma 2015: Big Repository
Alfresco Day Roma 2015: Big Repository
 

Similar to SQL Saturday 2019 - Event Processing with Spark

iot Saturday 2019 - PoC iot in 1 ora
iot Saturday 2019 - PoC iot in 1 oraiot Saturday 2019 - PoC iot in 1 ora
iot Saturday 2019 - PoC iot in 1 ora
Alessio Biasiutti
 
Azure Saturday Pordenone 2018 IoT real time processing for lazy developer
Azure Saturday Pordenone 2018 IoT real time processing for lazy developerAzure Saturday Pordenone 2018 IoT real time processing for lazy developer
Azure Saturday Pordenone 2018 IoT real time processing for lazy developer
Alessio Biasiutti
 
SQL Server Workload Profiling
SQL Server Workload ProfilingSQL Server Workload Profiling
SQL Server Workload Profiling
Gianluca Hotz
 
Azure PaaS databases
Azure PaaS databasesAzure PaaS databases
Azure PaaS databases
Gianluca Hotz
 
Big data analytics quanto vale e come sfruttarlo con stream analytics e power bi
Big data analytics quanto vale e come sfruttarlo con stream analytics e power biBig data analytics quanto vale e come sfruttarlo con stream analytics e power bi
Big data analytics quanto vale e come sfruttarlo con stream analytics e power bi
Marco Pozzan
 
Azure Synapse Analytics for your IoT Solutions
Azure Synapse Analytics for your IoT SolutionsAzure Synapse Analytics for your IoT Solutions
Azure Synapse Analytics for your IoT Solutions
Marco Parenzan
 
Kubernetes as HA time series server, a proposal
Kubernetes as HA time series server, a proposalKubernetes as HA time series server, a proposal
Kubernetes as HA time series server, a proposal
Giuliano Latini
 
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-servicePower BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Marco Pozzan
 
Azure Synapse: data lake & modern data warehouse dalla A alla Z
Azure Synapse: data lake &  modern data warehouse dalla A alla ZAzure Synapse: data lake &  modern data warehouse dalla A alla Z
Azure Synapse: data lake & modern data warehouse dalla A alla Z
Roberto Messora
 
Hadoop analyzerJR
Hadoop analyzerJRHadoop analyzerJR
Hadoop analyzerJR
Simone Romano
 
Thingspeak: integrazione
Thingspeak: integrazioneThingspeak: integrazione
Thingspeak: integrazione
Augusto Ciuffoletti
 
Novità di SQL Server 2017
Novità di SQL Server 2017Novità di SQL Server 2017
Novità di SQL Server 2017
Gianluca Hotz
 
Linuxday2013
Linuxday2013 Linuxday2013
Linuxday2013
Mariano Fiorentino
 
Introduzione al framework dl4j Antonio berti
Introduzione al framework dl4j Antonio bertiIntroduzione al framework dl4j Antonio berti
Introduzione al framework dl4j Antonio berti
Deep Learning Italia
 
Metadata Driven Pipeline with Microsoft Fabric
Metadata Driven Pipeline  with Microsoft FabricMetadata Driven Pipeline  with Microsoft Fabric
Metadata Driven Pipeline with Microsoft Fabric
Marco Pozzan
 
Architetture web - Linguaggi e standard - Web server, application server, dat...
Architetture web - Linguaggi e standard - Web server, application server, dat...Architetture web - Linguaggi e standard - Web server, application server, dat...
Architetture web - Linguaggi e standard - Web server, application server, dat...
Fulvio Corno
 
Open Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studioOpen Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studio
Par-Tec S.p.A.
 
Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...
Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...
Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...
Data Driven Innovation
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Steve Maraspin
 
Visual Studio Performance Tools
Visual Studio Performance ToolsVisual Studio Performance Tools
Visual Studio Performance Tools
Andrea Tosato
 

Similar to SQL Saturday 2019 - Event Processing with Spark (20)

iot Saturday 2019 - PoC iot in 1 ora
iot Saturday 2019 - PoC iot in 1 oraiot Saturday 2019 - PoC iot in 1 ora
iot Saturday 2019 - PoC iot in 1 ora
 
Azure Saturday Pordenone 2018 IoT real time processing for lazy developer
Azure Saturday Pordenone 2018 IoT real time processing for lazy developerAzure Saturday Pordenone 2018 IoT real time processing for lazy developer
Azure Saturday Pordenone 2018 IoT real time processing for lazy developer
 
SQL Server Workload Profiling
SQL Server Workload ProfilingSQL Server Workload Profiling
SQL Server Workload Profiling
 
Azure PaaS databases
Azure PaaS databasesAzure PaaS databases
Azure PaaS databases
 
Big data analytics quanto vale e come sfruttarlo con stream analytics e power bi
Big data analytics quanto vale e come sfruttarlo con stream analytics e power biBig data analytics quanto vale e come sfruttarlo con stream analytics e power bi
Big data analytics quanto vale e come sfruttarlo con stream analytics e power bi
 
Azure Synapse Analytics for your IoT Solutions
Azure Synapse Analytics for your IoT SolutionsAzure Synapse Analytics for your IoT Solutions
Azure Synapse Analytics for your IoT Solutions
 
Kubernetes as HA time series server, a proposal
Kubernetes as HA time series server, a proposalKubernetes as HA time series server, a proposal
Kubernetes as HA time series server, a proposal
 
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-servicePower BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
 
Azure Synapse: data lake & modern data warehouse dalla A alla Z
Azure Synapse: data lake &  modern data warehouse dalla A alla ZAzure Synapse: data lake &  modern data warehouse dalla A alla Z
Azure Synapse: data lake & modern data warehouse dalla A alla Z
 
Hadoop analyzerJR
Hadoop analyzerJRHadoop analyzerJR
Hadoop analyzerJR
 
Thingspeak: integrazione
Thingspeak: integrazioneThingspeak: integrazione
Thingspeak: integrazione
 
Novità di SQL Server 2017
Novità di SQL Server 2017Novità di SQL Server 2017
Novità di SQL Server 2017
 
Linuxday2013
Linuxday2013 Linuxday2013
Linuxday2013
 
Introduzione al framework dl4j Antonio berti
Introduzione al framework dl4j Antonio bertiIntroduzione al framework dl4j Antonio berti
Introduzione al framework dl4j Antonio berti
 
Metadata Driven Pipeline with Microsoft Fabric
Metadata Driven Pipeline  with Microsoft FabricMetadata Driven Pipeline  with Microsoft Fabric
Metadata Driven Pipeline with Microsoft Fabric
 
Architetture web - Linguaggi e standard - Web server, application server, dat...
Architetture web - Linguaggi e standard - Web server, application server, dat...Architetture web - Linguaggi e standard - Web server, application server, dat...
Architetture web - Linguaggi e standard - Web server, application server, dat...
 
Open Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studioOpen Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studio
 
Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...
Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...
Sistema di logging applicativo per ambienti distribuiti Hadoop-based - Monica...
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
 
Visual Studio Performance Tools
Visual Studio Performance ToolsVisual Studio Performance Tools
Visual Studio Performance Tools
 

More from Alessio Biasiutti

Tutto quello che non vi hanno mai detto su Azure Integration Services (Logic ...
Tutto quello che non vi hanno mai detto su Azure Integration Services (Logic ...Tutto quello che non vi hanno mai detto su Azure Integration Services (Logic ...
Tutto quello che non vi hanno mai detto su Azure Integration Services (Logic ...
Alessio Biasiutti
 
Power Platform: AI Builder la democratizzazione di AI
Power Platform: AI Builder la democratizzazione di AIPower Platform: AI Builder la democratizzazione di AI
Power Platform: AI Builder la democratizzazione di AI
Alessio Biasiutti
 
IoT Saturday 2019 - Custom Vision on Edge device
IoT Saturday 2019 - Custom Vision on Edge deviceIoT Saturday 2019 - Custom Vision on Edge device
IoT Saturday 2019 - Custom Vision on Edge device
Alessio Biasiutti
 
Azure day 2019 - Custom Vision on Edge device
Azure day 2019 - Custom Vision on Edge deviceAzure day 2019 - Custom Vision on Edge device
Azure day 2019 - Custom Vision on Edge device
Alessio Biasiutti
 
XE - Azure in the real world
XE - Azure in the real worldXE - Azure in the real world
XE - Azure in the real world
Alessio Biasiutti
 
Custom vision on edge device
Custom vision on edge deviceCustom vision on edge device
Custom vision on edge device
Alessio Biasiutti
 
Visual Studio for IoT Solutions
Visual Studio for IoT SolutionsVisual Studio for IoT Solutions
Visual Studio for IoT Solutions
Alessio Biasiutti
 

More from Alessio Biasiutti (7)

Tutto quello che non vi hanno mai detto su Azure Integration Services (Logic ...
Tutto quello che non vi hanno mai detto su Azure Integration Services (Logic ...Tutto quello che non vi hanno mai detto su Azure Integration Services (Logic ...
Tutto quello che non vi hanno mai detto su Azure Integration Services (Logic ...
 
Power Platform: AI Builder la democratizzazione di AI
Power Platform: AI Builder la democratizzazione di AIPower Platform: AI Builder la democratizzazione di AI
Power Platform: AI Builder la democratizzazione di AI
 
IoT Saturday 2019 - Custom Vision on Edge device
IoT Saturday 2019 - Custom Vision on Edge deviceIoT Saturday 2019 - Custom Vision on Edge device
IoT Saturday 2019 - Custom Vision on Edge device
 
Azure day 2019 - Custom Vision on Edge device
Azure day 2019 - Custom Vision on Edge deviceAzure day 2019 - Custom Vision on Edge device
Azure day 2019 - Custom Vision on Edge device
 
XE - Azure in the real world
XE - Azure in the real worldXE - Azure in the real world
XE - Azure in the real world
 
Custom vision on edge device
Custom vision on edge deviceCustom vision on edge device
Custom vision on edge device
 
Visual Studio for IoT Solutions
Visual Studio for IoT SolutionsVisual Studio for IoT Solutions
Visual Studio for IoT Solutions
 

SQL Saturday 2019 - Event Processing with Spark

  • 1. #sqlsat Event processing with Spark Alessio Biasiutti
  • 2.
  • 3. Alessio Biasiutti Azure Solution Architect Microsoft P-TSP alessiobiasiutti abiasiutti@altitudo.com
  • 4. Agenda ▪ EventHub ▪ Concetti Base ▪ Kafka ▪ Spark ▪ Concetti base ▪ Databricks ▪ Spark SQL ▪ Demo ▪ Spark Structured Streaming ▪ Connettore Spark per Event Hub ▪ Connettore Spark Per Cosmos DB ▪ Demo ▪ Q&A
  • 7. Concetti base ▪ Dimensione messaggio 256K-1M (dedicated) ▪ Protocolli ▪ HTTPS: overhead ogni invio dati (TLS) migliore per invio dati non frequente. ▪ AMQP: inizializzazione sessione pesante ma performance migliori per invio dati frequenti ▪ Capture file su Storage Account o su Data Lake Store ▪ Streaming Unit ▪ Ingress Fino a 1MB/sec o 1000 eventi/sec ▪ Egress Fino a 2MB/sec o 4096 eventi/sec ▪ Retention: 1-7 giorni
  • 8. Concetti base • Partitions: • Permettano di scalare orizzontalmente. • Un event receiver per ogni partizione • Numero fisso alla creazione tra 2 e 32 • Impostazione solo in fase di creazione • Partition key: • Assegnato dal publisher viene utilizzato per inviare i dati sempre alla stessa partizione • Nessun valore Round Robin • Consumer Group: • Uno per applicazione receiver • Checkpoint • Responsabilità del receiver eseguire commit dell’ultima posizione letta
  • 9. Kafka mode • Supporto per versione Kafka 1.0 o maggiori • Funzioni non supportate • Idempotent producer • Transaction • Compression • Size-based retention • Log compaction • Adding partitions to an existing topic • HTTP Kafka API support • Kafka Streams Kafka Concept Event Hubs Concept Cluster Namespace Topic Event Hub Partition Partition Consumer Group Consumer Group Offset Offset
  • 12. Introduzione Spark core engine Spark SQL Interactive queries Spark Structured Streaming Stream processing Spark MLlib Machine learning GraphX Graph computation
  • 13. Pipeline In pipeline complesse lo scambio dati tra engine diversi potrebbe essere molto costo Spark Streaming Machine learning Spark SQL
  • 14. Performance 102,5 100 72 23 2100 206 50400 6592 2013 Record (Hadoop) Spark 100 TB Data Size (TB) Time (Min) Nodes Cores tinyurl.com/spark-sort Logistic regression 140 120 100 80 40 20 0 60 Hadoop Spark 0.9 Logistic regression on a 100-node cluster with 100 GB of data. Spark is the 2014 Sort Benchmark winner. 3x faster than 2013 winner (Hadoop).
  • 16. Read Read Concetti base • Il driver esegue le funzioni utente dividendelo in operazioni parallele nei vari worker node • Il driver recupera i risultati delle varie operazioni • I worker nodes leggono e scrivono dati da e verso il filesystem Hadoop (HDFS or DBFS on Azure Storage Account) • I worker node mettono in cache parte dei dati letti Read Cluster manager HDFS Worker nodeWorker node Worker node Worker node Driver program SparkSession (SparkContext)
  • 17. Cluster Cluster Head node Spark master App 0 App 1 App 2 Browser Gateway Spark submit Zeppelin Jupyter Worker node 2 Worker 2 Worker node 1 Worker 1 Job Task Task Spark driver Spark context Dataset Dataset Job Task Task Worker node 3 Worker 3 Job Task Task Worker node 4 Worker 4 Job Task Task
  • 18. Databricks 1) Creare un workspace 2) Creare un cluster 3) Creare un notebook
  • 19. SparkSession • Punto di accesso all’applicazione e a tutte le funzionalità del cluster • Prima della versione 2 esistevano tanti SparkContext per ogni funzionalità
  • 20. Spark SQL Spark SQL è un motore fortemente ottimizzato per poter eseguire query SQL sui dati. Quando si esegue una query il risultato viene ritornato come Dataset/DataFrame • Un Dataset è un collezione di dati distribuita. Questa interfaccia è stata introdotta dopo la versione 1.6 • Un DataFrame è un dataset organizzato in colonne. Concettualmente è equivalente ad un tabella di un database relazionale o di un data frame in R/Python
  • 21. Spark SQL 1) Leggere dati da fonti esterne e formati diversi 2) Eseguire query • SQL • Functions 3) Salvare i dati all’interno del cluster 4) Salvare i dati su destinazioni esterne • Connecting to SQL Databases using JDBC • Amazon Redshift • Amazon S3 • Amazon S3 Select • Azure Blob Storage • Azure Data Lake Storage Gen1 • Azure Data Lake Storage Gen2 • Azure Cosmos DB • Azure SQL Data Warehouse • Cassandra • Couchbase • ElasticSearch • Import Hive Tables • MongoDB • Neo4j • Oracle • Avro Files • CSV Files • JSON Files • LZO Compressed Files • Parquet Files • Redis • Riak Time Series • Snowflake • Zip Files
  • 23. Structured Streaming Structured Streaming è il modulo di Stream Processing costruito sul motore Spark SQL Permette di eseguire analisi sui dati stream allo stesso modo con cui si analizzano i dati batch • Aggregations • event-time windows • stream-to-batch joins
  • 24. Concetti Base L’idea è di trattare un data stream come se fosse una tabella in cui vengono inserite continuamente delle righe alla fine In questo modo si possono eseguire dei comandi SQL come se fosse una tabella
  • 25. Concetti base • Ad ogni trigger le nuove righe vengono aggiunte alla «Input Table» • Una query sull’imput può generare un dei nuovi dati nella tabella Result • Ogni volta che la tabella «Result» viene aggiornata vengono scritti in output i dati: • Complete Mode: tutta la tabella (compito del connettore decidere come gestire la scrittura) • Append Mode: solo le nuove righe (si suppone che non ci siano updates) • Update Mode: vengono inviate tutte le righe aggiorate • Non mantiene in memoria tutta la tabella di input ma solo i dati che servono a calcolare la query
  • 26. Input • File • Azure Blob Storage • Socket • Rate Source (test data) • Apache Kafka • Amazon Kinesis • Optimized S3 File Source with SQS • Azure Event Hubs / IoT Hub
  • 27. Input - File File Source: permette di leggere dati da file comse se fossero uno stream: • path: il path di dove si trovano i file • maxFilesPerTrigger: massimo numero di file per trigger (default no max) • lastestFirst: se processare l’ultimo file per primo • format: il formato dei dati (parquet,…) In caso di input non strutturato o semi strutturato, per garantire uno schema consistente durante l’esecuzione delle query, bisogna definire il formato dell’input. val userSchema = new StructType().add("name", "string“, true).add("age", "integer“,true) StructField params: • name • datatype • nullable
  • 29. Input – Event Hub Connection Options: • consumerGroup – nome del consumer group • startingPosition – la posizione da cui partire • EventPosition.fromOffset("246812") • EventPosition.fromEnqueuedTime(Inst ant.now) • EventPosition.fromStartOfStream • EventPosition.fromEndOfStream • maxEventsPerTrigger – il numero massimo di eventi per trigger Column Type body binary partition string offset string sequenceNumber long enqueuedTime timestamp publisher string partitionKey string properties map[string, json] systemProperties map[string, json]
  • 32. Window operations Nome campo per riferimento del tempo Ampiezza Finestra Frequenza aggiornamento
  • 35. Watermarking Limiti: • L’aggregazione deve avere almeno una finestra o deve essere aggregata per un campo temporale • Nome del campo «tempo» deve essere lo stesso di quello specificato in window • Output mode deve essere Append o Update
  • 36. Late data and Watermarking
  • 37. Join Stream – Static Joins (inner e alcuni tipi di outer join) Join params: • dataset • join condition • tipo (inner/outer)
  • 39. Trigger • Il trigger specifica quando frequentemente vengono letti i dati dall’input per essere accumulati. • Ad ogni trigger vengono inviati dei dati alla result table • Default 0ms (appena finisce l’esecuzione parte la successiva) • 2 tipi • RunOnce (esecuzione della query una volta es schedulata) • Schedulati
  • 40. Output Tipi di output • Memory (Solo per test) • Kafka • EventHub • File • Azure Blob • Sink Custom
  • 42. Checkpoint In caso di failures o shutdown è possibile recuperare lo stato della query e continuare da dove si era fermata.
  • 44. Connettore Spark – Cosmos DB
  • 48. Q&A
  • 49. Grazie! Siete interessati alla nostra consulenza? https://www.altitudo.com/ Vi piacerebbe far parte del nostro staff? jobs@altitudo.com