Apache Zeppelin

From air
Jump to navigation Jump to search

Apache Zeppelin (incubating)

Synthèse

Apache Zeppelin est projet Apache sous licence open-source Apache2. Il est actuellement en incubation. Pour rappel, l'incubateur Apache est une passerelle de validation pour tout logiciel libre susceptible de devenir un projet à part entière de la fondation Apache.

Le projet fournit une interface web (notebook) qui permet d'analyser et mettre en forme visuellement les données (tableaux, graphes...) selon différents backend appelés interpreteurs.

Multiple language backend.png

Utilisation

Les interpréteurs sont sous forme de plugins. Il est donc possible d'en ajouter une infinité. On peut par exemple exploiter les données venant de PostgreSQL ou d'ElasticSearch. On spécifie l'interpréteur que l'on choisit en début de ligne.

Une fois que l'on a choisi son interpréteu et à partir du moment où il affiche des données pouvant être formatées dans un tableau, il est possible de les mettre en forme dans un graphique. On peut aussi directement afficher des données mises en forme manuellement :

Display table.png

Ou bien de différents interpréteurs :

 %psql.sql
 select * from mytable;


 %elasticsearch
 get /index/type/id


Les données peuvent ensuite être affichées de manière interactives :

Elasticsearch-search-pie.png

Zeppelin intègre directement Spark qui est un framework open source de calcul distribué directement en mémoire vive.

Il est du coup possible de faire jouer des scripts :

val bankText = sc.textFile("yourPath/bank/bank-full.csv")

case class Bank(age:Integer, job:String, marital : String, education : String, balance : Integer)

// split each line, filter out header (starts with "age"), and map it into Bank case class
val bank = bankText.map(s=>s.split(";")).filter(s=>s(0)!="\"age\"").map(
  s=>Bank(s(0).toInt,
          s(1).replaceAll("\"", ""),
          s(2).replaceAll("\"", ""),
          s(3).replaceAll("\"", ""),
          s(5).replaceAll("\"", "").toInt
         )
)

  // convert to DataFrame and create temporal table
  bank.toDF().registerTempTable("bank")

Dans cet exemple on parse le CSV pour créer des objets de type Bank.

Puis on peut y appliquer des requêtes. Par exemple, si on veut avoir la distribution d'âge d'une banque :

 %sql select age, count(1) from bank where age < 30 group by age order by age

Installation

Télécharger le dernier binaire: https://zeppelin.incubator.apache.org/download.html

Décompresser le tgz puis se déplacer dans le dossier.

Pour démarrer Zeppelin :

 bin/zeppelin-daemon.sh start

Si tout s'est bien passé, il suffit d'ensuite visiter http://localhost:8080 dans le navigateur.


Pour stopper Zeppelin :

 bin/zeppelin-daemon.sh stop