Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
DEVFEST NANTES 16
Bruno Bonnin - @_bruno_b_
Apache Spark avec NodeJS ?
Oui, c’est possible avec EclairJS !
2DEVFEST NANTES 16
About me
Bruno Bonnin - @_bruno_b_
Architecte / Développeur
http://webdemo.myscript.com/
3DEVFEST NANTES 16
Java, Scala,
Python, R
JavaScript
4DEVFEST NANTES 16
EclairJS
5DEVFEST NANTES 16
Spark Worker
Spark Worker
EclairJS
Cluster
Manager
Spark WorkersSpark Driver
Libs SparkLibs Spark
Scrip...
6DEVFEST NANTES 16
EclairJS: implémentation des composants
7DEVFEST NANTES 16
EclairJS: API Spark Core
val lines = sc.textFile("dream.txt")
val words = lines
.flatMap(
line => line....
8DEVFEST NANTES 16
EclairJS: API Spark SQL
val df = sqlCtx.read.json("people.json")
df.printSchema()
df.select("name", "ag...
9DEVFEST NANTES 16
app.get('/words', (req, res) => {
var lines = sc.textFile('dream.txt').cache();
var something = 0;
var ...
10DEVFEST NANTES 16
app.get('/words', (req, res) => {
var lines = sc.textFile('dream.txt').cache();
var something = 0;
var...
11DEVFEST NANTES 16
app.get('/words', (req, res) => {
var lines = sc.textFile('dream.txt').cache();
var something = 0;
var...
12DEVFEST NANTES 16
app.get('/words', (req, res) => {
var lines = sc.textFile('dream.txt').cache();
var something = 0;
var...
13DEVFEST NANTES 16
EclairJS: déploiement
Spark WorkerSpark Workers
Application
EclairJS - API
Node
Cluster
Manager Eclair...
14DEVFEST NANTES 16
Démo
Client SparkApplication
EclairJS - API Node EclairJS - API Nashorn
Spark Workers
EclairJS - API N...
15DEVFEST NANTES 16
Conclusion
Facile à apprendre (surtout pour ceux qui connaissent l’API Scala/Java)
Idéal pour les déve...
16DEVFEST NANTES 16 16DEVFEST NANTES 16
Merci !
@_bruno_b_
https://github.com/bbonnin/devfestnantes2016
Prochain SlideShare
Chargement dans…5
×

Apache Spark avec NodeJS ? Oui, c'est possible avec EclairJS !

647 vues

Publié le

Présentation d'EclairJS faite lors du DevFest Nantes 2016

Publié dans : Logiciels

Apache Spark avec NodeJS ? Oui, c'est possible avec EclairJS !

  1. 1. DEVFEST NANTES 16 Bruno Bonnin - @_bruno_b_ Apache Spark avec NodeJS ? Oui, c’est possible avec EclairJS !
  2. 2. 2DEVFEST NANTES 16 About me Bruno Bonnin - @_bruno_b_ Architecte / Développeur http://webdemo.myscript.com/
  3. 3. 3DEVFEST NANTES 16 Java, Scala, Python, R JavaScript
  4. 4. 4DEVFEST NANTES 16 EclairJS
  5. 5. 5DEVFEST NANTES 16 Spark Worker Spark Worker EclairJS Cluster Manager Spark WorkersSpark Driver Libs SparkLibs Spark Script EngineScript Engine EclairJS Nashorn EclairJS Nashorn JVM JVM App NodeJS EclairJS NodeJS
  6. 6. 6DEVFEST NANTES 16 EclairJS: implémentation des composants
  7. 7. 7DEVFEST NANTES 16 EclairJS: API Spark Core val lines = sc.textFile("dream.txt") val words = lines .flatMap( line => line.split(" ")) .filter( word => word.trim.length > 0) val counts = words .mapToPair( word => (word, 1)) .reduceByKey(_ + _) var lines = sc.textFile("dream.txt"); var words = lines .flatMap(function (line) { return line.split(" "); }) .filter(function (word) { return word.trim().length > 0; }); var counts = words .mapToPair(function (word, Tuple2) { return new Tuple2(word, 1); }, [Tuple2]) .reduceByKey(function (a, b) { return a + b; });
  8. 8. 8DEVFEST NANTES 16 EclairJS: API Spark SQL val df = sqlCtx.read.json("people.json") df.printSchema() df.select("name", "age") .filter(col("age").gt(30)) .show() df.registerTempTable("people") val sqlDF = sqlCtx .sql("SELECT * FROM people") sqlDF.show() var df = sqlCtx.read().json('people.json'); df.printSchema(); df.select('name', 'age') .filter(col('age').gt(30)) .show(); df.registerTempTable('people'); var sqlDF = sqlCtx .sql('SELECT * FROM people'); sqlDF.show();
  9. 9. 9DEVFEST NANTES 16 app.get('/words', (req, res) => { var lines = sc.textFile('dream.txt').cache(); var something = 0; var words = lines .flatMap(line => { something += 1; console.log('flatmap:' + line); return line.split(' '); }) .collect() }); EclairJS: code dans NodeJS
  10. 10. 10DEVFEST NANTES 16 app.get('/words', (req, res) => { var lines = sc.textFile('dream.txt').cache(); var something = 0; var words = lines .flatMap(line => { something += 1; console.log('flatmap:' + line); return line.split(' '); }) .collect() }); EclairJS: code dans NodeJS .then(results => { res.json({result: results}); }) .catch(err => { res.status(500).send(err); });
  11. 11. 11DEVFEST NANTES 16 app.get('/words', (req, res) => { var lines = sc.textFile('dream.txt').cache(); var something = 0; var words = lines .flatMap(line => { something += 1; console.log('flatmap:' + line); return line.split(' '); }) .collect() }); EclairJS: code dans NodeJS .then(results => { res.json({result: results}); }) .catch(err => { res.status(500).send(err); });
  12. 12. 12DEVFEST NANTES 16 app.get('/words', (req, res) => { var lines = sc.textFile('dream.txt').cache(); var something = 0; var words = lines .flatMap(line => { function (line) { something += 1; console.log('flatmap:' + line); return line.split(' '); }) .collect() .then(results => { res.json({result: results}); }) .catch(err => { res.status(500).send(err); }); }); EclairJS: code dans NodeJS Code métier interpréter dans Nashorn (pas dans NodeJS) : ● Ne connait pas console ● Est compliant ES5
  13. 13. 13DEVFEST NANTES 16 EclairJS: déploiement Spark WorkerSpark Workers Application EclairJS - API Node Cluster Manager EclairJS - API Nashorn Apache Toree (Spark Driver) EclairJS - API Nashorn Jupyter Notebook Gateway EclairJS Shell EclairJS - API Nashorn
  14. 14. 14DEVFEST NANTES 16 Démo Client SparkApplication EclairJS - API Node EclairJS - API Nashorn Spark Workers EclairJS - API Nashorn
  15. 15. 15DEVFEST NANTES 16 Conclusion Facile à apprendre (surtout pour ceux qui connaissent l’API Scala/Java) Idéal pour les développeurs JS que le Scala peut rebuter :-) Implémentation en cours : dernière version avec le support de Spark 2.0 Pour aller plus loin: ● https://eclairjs.github.io/ ● https://github.com/EclairJS/eclairjs
  16. 16. 16DEVFEST NANTES 16 16DEVFEST NANTES 16 Merci ! @_bruno_b_ https://github.com/bbonnin/devfestnantes2016

×