La mia prima data pipeline
Pycon 8
Riccardo Magliocchetti
whoami
Sw developer @ Maieutical Labs
Consulente
@rmistaken
Menu
Una data pipeline che:
consuma una api
salva i dati in db
ci permette di fare delle analisi
Cos'è una
data pipeline?
Perchè questo talk?
Dobbiamo mostrare ai nostri partner statistiche dell'uso dei loro
prodotti da parte degli utenti
Necessità
multi-tenancy: autenticazione e autorizzazione
autonomia: i partner devono essere liberi di fare le proprie
analisi
Come lo implemento?
Web app fatta in casa
Elasticsearch e Kibana
Time-series db e Grafana
Bokeh
Come lo ho
implementato?
Boring tech!
storage: PostgreSQL
nuova API per esportare i dati
pipeline batch, Luigi per il plumbing
per il frontend? prendiamo tempo :)
Perchè batch?
fallisce, guardo i log e rifaccio ripartire
devo cambiare il formato dati?
rifaccio le query alle api e ricreo il db
non mi servono dati in real time
Luigi: un framework
risoluzione dipendenze e work ow
cli
errori e noti che
scheduler
web ui
integrazioni, vedi luigi.contrib
PostgreSQL, MySQL, MongoDB, redis
s3
ssh
Hadoop, Hive, HDFS
Luigi: concetti principali
Task: run(), output(), requires()
Target: un le, una riga in un database, etc..
Ma il frontend?
30 marzo 2016
@mistercrunch annuncia:
As a vector for data exploration, discovery, and collaborative
analytics, we have built and are now open sourcing, a data
exploration and dashboarding platform named Superset.
Superset
mantenuto da un team di airbnb
permette di creare visualizzazioni e dashboard in
autonomia
Superset: tech
hackable! ~13 KLOC di python
Flask + Flask-App-Builder
frontend: react, d3.js / nvd3.js
dati: pandas + sqlalchemy / druid
Superset: concetti
Database
Slice
Dashboard
Database
PostgreSQL, MySQL, SQLite
SQL Server, Oracle
Redshift, Vertica
Presto, Impala, Hive, SparkSQL
Druid
Slice
Dashboard
Batterie incluse
Autenticazione e Autorizzazione
SQL Lab
SQL Lab
DEMO
Conclusioni
Creare data pipelines con Luigi è semplice e conveniente
Superset ci permette di fare analisi senza scrivere codice
Thanks!
@rmistaken
github.com/xrmx
Contatti