SlideShare une entreprise Scribd logo
1
Big Data Viz (and much more!) with
Apache Zeppelin
1
1Bruno Bonnin @_bruno_b_
About me
Bruno Bonnin @_bruno_b_ - 17 juin
Architecte logiciel / Développeur @MyScript
#Java #JavaScript #Python
#Elastisearch #MongoDB # NoSQL
#Hadoop #Spark #Storm #BigData
#HTML5 #AngularJS #VueJS #NodeJS
Apache Zeppelin: mais qu’est-ce donc ?
Exploration des données...
“The one interface for all your big data needs”
… avec visualisation graphique
Création de documents interactifs…
… facilitant le partage
Et tout ça, dans un navigateur !
Apache Zeppelin: multi-langages, multi-backends
Votre interpréteur
Interpréteurs
externes
Apache Zeppelin: visualisation graphique
Apache Zeppelin: d’où ça vient ?
● Origine: NFLabs (http://www.nflabs.com/)
○ Plusieurs essais de faire un env. pour l'analyse de
données depuis 2012
○ Au départ, produit commercial
○ Puis, décision de le proposer à la communauté Apache
● Projet "incubator" à partir de décembre 2014
Zeppelin est Top Level Project depuis le 25 mai 2016 !
Démo
(http://localhost:8000/#/)
Apache Zeppelin: User Interface
Paragraphe
Texte à interpréter (SQL, Spark,
sh, html, …)
Interpréteur utilisé (sql, spark, sh, md, jdbc, …)
Résultat
Toolbar du paragraphe (start, …)
Choix de l’affichage
Formulaire généré à partir de la
requête
JVM
Architecture
Zeppelin
Server
JVM
Spark
Interpreter
JVM
Hive
Interpreter
Thrift
Http WebSocket
JVM
Votre
Interpréteur
JVM
Un peu de dynamique
Zeppelin
Server
JVM
Spark
Interpreter
Texte à interpréter:
4
5
6
3
2
1
%sql
SELECT * FROM Bank
Lancement de l’
interpréteur “sql”
Interprétation des
commandes:
SELECT * FROM Bank
Traitement de la requête
Résultat: table
(texte formaté avec
des tabulations)
age education balance
25 primary 1200
45 unknown 4500
Résultat envoyé au
browser qui
interprète le format
Systèmes d’affichage: la base
Il existe plusieurs systèmes d'affichage:
● texte: output par défaut, sans formatage particulier
● html : si l'output commence par %html
○ Affichage du html contenu dans la sortie
● table : si l'output commence par %table
○ La sortie doit contenir des lignes avec chaque cellule séparée par des t
○ Accès automatiquement à des visualisations graphiques de vos
données dans ce cas !!
Le format peut être émis par l’interpréteur (exemple: SQL)
Systèmes d’affichage: formulaires
Génération automatique de formulaires (input text, select) si
présence de ${...} dans le code à interpréter
Systèmes d’affichage: Angular
Permet d’avoir accès à des formulaires et des affichages plus
évolués/sympa/… (mais ça demande du code)
● Côté client: il existe un interpréteur “angular”
○ Le paragraphe contient le code html/javascript pour interpréter pour
réaliser l’affichage du paragraphe
● Zeppelin fournit aussi une API permettant de partager des données
entre les paragraphes Spark et Angular, accessible via une variable : z
○ z.angularBind ( nom, valeur )
○ z.angularUnbind (nom )
○ z.angular( nom )
○ z.runParagraph( id paragraphe )
Démo
(http://localhost:8000/#/notebook/2BNCV88E6)
Systèmes d’affichage: extensions
Zeppelin embarque D3.js, on peut donc
l’utiliser (en codant un peu) pour proposer
des visualisations top moumoutes !
1
2
Libs graphiques externes: référencées
dans le code (<script src=””>)
Démo
(http://localhost:8000/#/notebook/2BMXSE5D2)
Publication des résultats
Les résultats peuvent être réutilisés dans d’autres pages (via <iframe>)
Analyse et construction dans Zeppelin Intégration dans votre site
Étendre Zeppelin: développer son interpréteur
public class MyInterpreter extends Interpreter {
static {
Interpreter.register("interp_name", "interp_group",MyInterpreter.class.getName());
}
public InterpreterResult interpret(String cmds, InterpreterContext ctx) {
String result = ...
return new InterpreterResult(ResultCode.SUCCESS, Type.HTML, result);
}
public void open() {}
public void close() {}
public void cancel(InterpreterContext ctx) {}
public int getProgress(InterpreterContext ctx) {}
public List<String> completion(String cmd, int i) {}
public FormType getFormType() {}
}
Apache Zeppelin: y a quoi d’autres ?
● Scheduler
● Export / Import
● Gestion de versions
● Sécurité: indispensable pour passer du stade de PoC à un vrai système en
prod (mais ça vient toujours en dernier)
○ Authentification avec Shiro, Autorisation au niveau Notebook, ...
En résumé...
Zeppelin, c’est:
● Open source (https://zeppelin.apache.org/)
● Ouvert (on peut l’adapter à ses besoins, son contexte, via le dev d’
interpréteurs, l’utilisation de libs pour les visualisations)
● Plein de fonctionnalités déjà présentes ou à venir:
○ Nouveaux interpréteurs (scalding,...)
○ Visualisation de maps
○ Améliorations internes / UI
○ ...
Votre futur environnement pour vos futurs besoins autour de
vos futurs (méga-) données
@_bruno_b_
https://github.com/bbonnin/web2day2016
Merci !
Liens Zeppelin
Site officiel:
● https://zeppelin.incubator.apache.org/
Docs:
● https://zeppelin.incubator.apache.org/docs/latest/
Code source:
● https://github.com/apache/incubator-zeppelin
Exemples:
● https://www.zeppelinhub.com/viewer
Exemple d’interpréteur: ArangoDB Interpreter
● https://github.com/bbonnin/zeppelin-arangodb-interpreter
Source des données
Bornes de recharge:
● https://www.data.gouv.fr/s/resources/fichier-consolide-des-bornes-de-
recharge-pour-vehicules-electriques-irve/20151008-182813/IRVE-201510.csv
NASA:
● https://data.nasa.gov/
TripAdvisor:
● http://times.cs.uiuc.edu/~wang296/Data/
Bank:
● http://archive.ics.uci.edu/ml/machine-learning-databases/00222/bank.zip
Exemple D3.js
● https://www.zeppelinhub.
com/viewer/notebooks/bm90ZTovL2Rjb3JuZWF1L1BlcnNvbmFsLU5vdGVib
29rcy80NzU5L25vdGUuanNvbg

Contenu connexe

PDF
Explorez vos données présentes dans MongoDB avec Apache Zeppelin
PDF
Tout ce que le getting started mongodb ne vous dira pas
PDF
Explorez vos données avec apache zeppelin
PDF
Tout ce que le getting started mongo db ne vous dira pas
PDF
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
PDF
Oxalide Workshop #3 - Elasticearch, an overview
PDF
Stream processing et SQL
PDF
Utiliser Hadoop en perl avec HadoopStreaming
Explorez vos données présentes dans MongoDB avec Apache Zeppelin
Tout ce que le getting started mongodb ne vous dira pas
Explorez vos données avec apache zeppelin
Tout ce que le getting started mongo db ne vous dira pas
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Oxalide Workshop #3 - Elasticearch, an overview
Stream processing et SQL
Utiliser Hadoop en perl avec HadoopStreaming

Tendances (10)

ODP
Réu technodejs
PDF
Pentaho Ctools : tips & tricks
PDF
CocoaHeads Rennes #16: OHHTTPStubs
PDF
Introduction au langage Go
PPT
20111006 bonnes pratiques-gi_g_v1
PDF
Node.js et les nouvelles technologies javascript
PDF
Synchroniser ses applications (plus) simplement
PPTX
ElasticSearch : Architecture et Développement
PDF
Introduction TypeScript
PPTX
Présentation de Node.js
Réu technodejs
Pentaho Ctools : tips & tricks
CocoaHeads Rennes #16: OHHTTPStubs
Introduction au langage Go
20111006 bonnes pratiques-gi_g_v1
Node.js et les nouvelles technologies javascript
Synchroniser ses applications (plus) simplement
ElasticSearch : Architecture et Développement
Introduction TypeScript
Présentation de Node.js
Publicité

En vedette (19)

PDF
Apache Spark avec NodeJS ? Oui, c'est possible avec EclairJS !
PDF
Apache Kafka, Un système distribué de messagerie hautement performant
PPTX
Hadoop @ eBay: Past, Present, and Future
PPT
How To Prepare For The Future Of Search
PPTX
The Future of Search - Will Critchlow's presentation at FODM 2013
PDF
SEO: Same as it Ever Was
PDF
Evolutions et nouveaux outils SEO
PDF
SearchLove London 2015 | Will Critchlow | Practical Tips for the Future of ...
PPTX
Data Science : Méthodologie, Outillage et Application - MS Cloud Summit Paris...
PDF
The Pragmatic Future of Search
PPTX
Apache flink - prise en main rapide
PDF
The Quick And Dirty Guide To Creating Blog Posts That Your Audience Craves
PDF
HTTPS The Road To A More Secure Web / SEOCamp Paris
PDF
Big Data visualization with Apache Spark and Zeppelin
PDF
The Future of Everything
PDF
Mobile-First SEO - The Marketers Edition #3XEDigital
PDF
SlideShare 101
PDF
3 Things Every Sales Team Needs to Be Thinking About in 2017
PDF
How to Become a Thought Leader in Your Niche
Apache Spark avec NodeJS ? Oui, c'est possible avec EclairJS !
Apache Kafka, Un système distribué de messagerie hautement performant
Hadoop @ eBay: Past, Present, and Future
How To Prepare For The Future Of Search
The Future of Search - Will Critchlow's presentation at FODM 2013
SEO: Same as it Ever Was
Evolutions et nouveaux outils SEO
SearchLove London 2015 | Will Critchlow | Practical Tips for the Future of ...
Data Science : Méthodologie, Outillage et Application - MS Cloud Summit Paris...
The Pragmatic Future of Search
Apache flink - prise en main rapide
The Quick And Dirty Guide To Creating Blog Posts That Your Audience Craves
HTTPS The Road To A More Secure Web / SEOCamp Paris
Big Data visualization with Apache Spark and Zeppelin
The Future of Everything
Mobile-First SEO - The Marketers Edition #3XEDigital
SlideShare 101
3 Things Every Sales Team Needs to Be Thinking About in 2017
How to Become a Thought Leader in Your Niche
Publicité

Plus de Bruno Bonnin (13)

PDF
[Devoxx MA 2023] R2DBC = R2D2 + JDBC (enfin presque...)
PDF
Stream processing avec Apache Pulsar
PDF
Stream processing et SQL
PDF
Stream processing et SQL
PDF
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
PDF
Stream processing et SQL
PDF
Jug summer camp 2017 - Vue.js, même un dev java peut en faire !
PDF
A la découverte de vue.js
PDF
Vue.js, même un dev java peut en faire !
PDF
Vue, j’avais pas vu !
PDF
Tout ce que le getting started MongoDB ne vous dira pas
PPTX
MUG Nantes - MongoDB et son connecteur pour hadoop
PDF
Breizhcamp 2015 - Comment (ne pas réussir à) modéliser ses data dans elastics...
[Devoxx MA 2023] R2DBC = R2D2 + JDBC (enfin presque...)
Stream processing avec Apache Pulsar
Stream processing et SQL
Stream processing et SQL
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Stream processing et SQL
Jug summer camp 2017 - Vue.js, même un dev java peut en faire !
A la découverte de vue.js
Vue.js, même un dev java peut en faire !
Vue, j’avais pas vu !
Tout ce que le getting started MongoDB ne vous dira pas
MUG Nantes - MongoDB et son connecteur pour hadoop
Breizhcamp 2015 - Comment (ne pas réussir à) modéliser ses data dans elastics...

Big Data Viz (and much more!) with Apache Zeppelin

  • 1. 1 Big Data Viz (and much more!) with Apache Zeppelin 1 1Bruno Bonnin @_bruno_b_
  • 2. About me Bruno Bonnin @_bruno_b_ - 17 juin Architecte logiciel / Développeur @MyScript #Java #JavaScript #Python #Elastisearch #MongoDB # NoSQL #Hadoop #Spark #Storm #BigData #HTML5 #AngularJS #VueJS #NodeJS
  • 3. Apache Zeppelin: mais qu’est-ce donc ? Exploration des données... “The one interface for all your big data needs” … avec visualisation graphique Création de documents interactifs… … facilitant le partage Et tout ça, dans un navigateur !
  • 4. Apache Zeppelin: multi-langages, multi-backends Votre interpréteur Interpréteurs externes
  • 6. Apache Zeppelin: d’où ça vient ? ● Origine: NFLabs (http://www.nflabs.com/) ○ Plusieurs essais de faire un env. pour l'analyse de données depuis 2012 ○ Au départ, produit commercial ○ Puis, décision de le proposer à la communauté Apache ● Projet "incubator" à partir de décembre 2014 Zeppelin est Top Level Project depuis le 25 mai 2016 !
  • 8. Apache Zeppelin: User Interface Paragraphe Texte à interpréter (SQL, Spark, sh, html, …) Interpréteur utilisé (sql, spark, sh, md, jdbc, …) Résultat Toolbar du paragraphe (start, …) Choix de l’affichage Formulaire généré à partir de la requête
  • 10. JVM Un peu de dynamique Zeppelin Server JVM Spark Interpreter Texte à interpréter: 4 5 6 3 2 1 %sql SELECT * FROM Bank Lancement de l’ interpréteur “sql” Interprétation des commandes: SELECT * FROM Bank Traitement de la requête Résultat: table (texte formaté avec des tabulations) age education balance 25 primary 1200 45 unknown 4500 Résultat envoyé au browser qui interprète le format
  • 11. Systèmes d’affichage: la base Il existe plusieurs systèmes d'affichage: ● texte: output par défaut, sans formatage particulier ● html : si l'output commence par %html ○ Affichage du html contenu dans la sortie ● table : si l'output commence par %table ○ La sortie doit contenir des lignes avec chaque cellule séparée par des t ○ Accès automatiquement à des visualisations graphiques de vos données dans ce cas !! Le format peut être émis par l’interpréteur (exemple: SQL)
  • 12. Systèmes d’affichage: formulaires Génération automatique de formulaires (input text, select) si présence de ${...} dans le code à interpréter
  • 13. Systèmes d’affichage: Angular Permet d’avoir accès à des formulaires et des affichages plus évolués/sympa/… (mais ça demande du code) ● Côté client: il existe un interpréteur “angular” ○ Le paragraphe contient le code html/javascript pour interpréter pour réaliser l’affichage du paragraphe ● Zeppelin fournit aussi une API permettant de partager des données entre les paragraphes Spark et Angular, accessible via une variable : z ○ z.angularBind ( nom, valeur ) ○ z.angularUnbind (nom ) ○ z.angular( nom ) ○ z.runParagraph( id paragraphe )
  • 15. Systèmes d’affichage: extensions Zeppelin embarque D3.js, on peut donc l’utiliser (en codant un peu) pour proposer des visualisations top moumoutes ! 1 2 Libs graphiques externes: référencées dans le code (<script src=””>)
  • 17. Publication des résultats Les résultats peuvent être réutilisés dans d’autres pages (via <iframe>) Analyse et construction dans Zeppelin Intégration dans votre site
  • 18. Étendre Zeppelin: développer son interpréteur public class MyInterpreter extends Interpreter { static { Interpreter.register("interp_name", "interp_group",MyInterpreter.class.getName()); } public InterpreterResult interpret(String cmds, InterpreterContext ctx) { String result = ... return new InterpreterResult(ResultCode.SUCCESS, Type.HTML, result); } public void open() {} public void close() {} public void cancel(InterpreterContext ctx) {} public int getProgress(InterpreterContext ctx) {} public List<String> completion(String cmd, int i) {} public FormType getFormType() {} }
  • 19. Apache Zeppelin: y a quoi d’autres ? ● Scheduler ● Export / Import ● Gestion de versions ● Sécurité: indispensable pour passer du stade de PoC à un vrai système en prod (mais ça vient toujours en dernier) ○ Authentification avec Shiro, Autorisation au niveau Notebook, ...
  • 20. En résumé... Zeppelin, c’est: ● Open source (https://zeppelin.apache.org/) ● Ouvert (on peut l’adapter à ses besoins, son contexte, via le dev d’ interpréteurs, l’utilisation de libs pour les visualisations) ● Plein de fonctionnalités déjà présentes ou à venir: ○ Nouveaux interpréteurs (scalding,...) ○ Visualisation de maps ○ Améliorations internes / UI ○ ... Votre futur environnement pour vos futurs besoins autour de vos futurs (méga-) données
  • 22. Liens Zeppelin Site officiel: ● https://zeppelin.incubator.apache.org/ Docs: ● https://zeppelin.incubator.apache.org/docs/latest/ Code source: ● https://github.com/apache/incubator-zeppelin Exemples: ● https://www.zeppelinhub.com/viewer Exemple d’interpréteur: ArangoDB Interpreter ● https://github.com/bbonnin/zeppelin-arangodb-interpreter
  • 23. Source des données Bornes de recharge: ● https://www.data.gouv.fr/s/resources/fichier-consolide-des-bornes-de- recharge-pour-vehicules-electriques-irve/20151008-182813/IRVE-201510.csv NASA: ● https://data.nasa.gov/ TripAdvisor: ● http://times.cs.uiuc.edu/~wang296/Data/ Bank: ● http://archive.ics.uci.edu/ml/machine-learning-databases/00222/bank.zip Exemple D3.js ● https://www.zeppelinhub. com/viewer/notebooks/bm90ZTovL2Rjb3JuZWF1L1BlcnNvbmFsLU5vdGVib 29rcy80NzU5L25vdGUuanNvbg