apache zeppelin @devoxxfr 2016
TRANSCRIPT
#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 ? ☞ [email protected] ☞ @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 T
Web
Sock
et
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
JVM Zeppelin Engine
RawTextBlock
RawTextBlock
ConvertedTo
HTML
HTMLOutput
! !
!!
JVM
#DevoxxFR
Démo: Interpréteur AsciiDoc
#DevoxxFR
Interpréteur Cassandra
23
Cassandra Interpreter
JVM
DisplayResults as
HTML
! !
!
Zeppelin Server
JVM
RawTextBlock
RawTextBlock
Cassandra Cassandra
Java Driver
!
Async CQLstatements
!RenderHTML
!
#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 commandHELP;
Options Commands@consistency …;@retryPolicy …;@fetchSize …;
#DevoxxFR
Démo: Interpréteur Cassandra
#DevoxxFR
Q & R
! "