#DevoxxFR
Apache Zeppelin
le notebook d’avenir pour
l’éco-système Big Data
1
#DevoxxFR
Un peu de moi
Duy Hai DOAN
Evangéliste technique & consultant Apache Cassandra
•  talks, meetups, confs
•  projet open-source (Achilles, Apache Zeppelin)
•  Des questions sur Apache Cassandra/Apache Zeppelin ?
☞ duy_hai.doan@datastax.com
☞ @doanduyhai
2
#DevoxxFR
Datastax
•  Fondé en Avril 2010
•  Plus gros pourvoyeur de contributeur à Apache Cassandra™
•  Bureaux européens à Londres, Paris et Berlin
•  Datastax Enterprise = OSS Cassandra + fonctionnalités+++
3
#DevoxxFR
Qu’est ce Apache Zeppelin ?
#DevoxxFR
Brève description
5
#DevoxxFR
Démo:
Cassandra Full Text Search
Cassandra – SparkSQL analytics
#DevoxxFR 7
Architecture
Zeppelin Server
Zeppelin Engine
R
E
S
TWebSocket
Spark Interpreter Group
Spark SparkSQL
Zeppelin
Interpreter
Factory
Tajo Interpreter
Flink Interpreter
Cassandra Interpreter
JVM
JVM
JVM
JVM
JVM
#DevoxxFR
Éléments graphiques
#DevoxxFR
Démo
#DevoxxFR
Méthodes d’affichage
#DevoxxFR
Démo
#DevoxxFR
Système d’interpréteurs
#DevoxxFR
Cycle de vie d’un interpréteur
  Réception des commandes/données en entrée
•  texte brut
•  formulaire de données
  Traiter les commandes/données par un système externe
  Formatter la réponse avec une méthode d’affichage Zeppelin
  Renvoyer la réponse au Zeppelin-engine
13
#DevoxxFR
Interpréteurs d’origine
•  Spark (Spark core, SparkSQL/DataFrame, PySpark)
•  Spark core = interpréteur par défaut (ou %spark)
•  SparkSQL = %sql
•  Shell (%sh)
•  Markdown (%md)
•  AngularJS (%angular)
14
#DevoxxFR
Interpréteurs communautaires
Alluxio
Cassandra
ElasticSearch
Flink
Geode
HBase
Hive
Ignite
JDBC
…
15
#DevoxxFR
Interpréteur:
configuration & sélection
#DevoxxFR
Créer son propre interpréteur
#DevoxxFR
Étapes
Créer une classe qui étend la classe Interpreter de base
L’enregister dans un bloc static 😳😳😳
En option, définir quelques paramètres par défaut
18
static {!
Interpreter.register("Nom_interpréteur",!
ClasseInterpreteur.class.getName());!
}!
static {!
Interpreter.register("Nom_interpréteur",!
ClasseInterpreteur.class.getName(),!
new InterpreterPropertyBuilder()!
.add("prop1", "val1")...build());!
}!
#DevoxxFR
Pour déclarer son interpréteur en dûr
•  Éditer l’enum ZeppelinConfiguration.ConfVars
•  Ajouter le nom de classe de son interpréteur dans la propriété
ZEPPELIN_INTERPRETERS
19
#DevoxxFR
Ou déclarer son interpréteur en conf
•  Copier conf/zeppelin-site.xml depuis conf/zeppelin-site.xml.template
•  Ajouer son interpréteur à la propriété zeppelin.interpreters
20
<property>!
<name>zeppelin.interpreters</name>!
<value>org.apache.zeppelin.spark.SparkInterpreter,!
org.apache.zeppelin.spark.PySparkInterpreter,!
org.apache.zeppelin.spark.SparkSqlInterpreter,!
org.apache.zeppelin.spark.DepInterpreter,!
org.apache.zeppelin.markdown.Markdown,!
org.apache.zeppelin.shell.ShellInterpreter,!
org.apache.zeppelin.hive.HiveInterpreter,!
fr.moi.MonInterpreteurToutPouri!
</value>!
</property>!
#DevoxxFR
Interpréteur AsciiDoc
21
Zeppelin Server
AsciiDoc Interpreter
JVMZeppelin Engine
Raw
Text
Block
Raw
Text
Block
Converted
To
HTML
HTML
Output
! !
!!
JVM
#DevoxxFR
Démo:
Interpréteur AsciiDoc
#DevoxxFR
Interpréteur Cassandra
23
Cassandra
Interpreter
JVM
Display
Results as
HTML
! !
!
Zeppelin
Server
JVM
Raw
Text
Block
Raw
Text
Block
Cassandra
Cassandra
Java
Driver
!
Async CQL
statements
!Render
HTML
!
#DevoxxFR
Commandes spéciales
24
Native CQL statements
SELECT * FROM …;
INSERT INTO …;
…
Schema commands
DESCRIBE TABLE …;
DESCRIBE KEYSPACE …;
…
Prepared statements
Commands
@prepare …;
@bind …;
@remove_prepared …;
Help command
HELP;
Options Commands
@consistency …;
@retryPolicy …;
@fetchSize …;
#DevoxxFR
Démo:
Interpréteur Cassandra
#DevoxxFR
Q & R
! "
#DevoxxFR
Merci
27
@doanduyhai
duy_hai.doan@datastax.com
http://zeppelin.incubator.apache.org/

Apache Zeppelin @DevoxxFR 2016