1. Scala pour le Data Eng
Paris Data Eng — Février 2019
Jonathan WINANDY
univalence.io
2. Jonathan Winandy
• Co-Organisateur du Paris Data Eng
• Fondateur d’univalence.io “Data made simple”
-> Cabinet d’expertise en Data Engineering
• Conférencier dans le domaine de la Méga Data :
• Construction de Datalakes (spark-adabra)
• Accélération des cycles de développement (fast-spark)
• Qualité des données (centrifuge)
• …
3. Qu’est-ce que le Data Eng ?
• Donner l’accès aux données.
• Pérenniser les ressources immatérielles.
5. Pour arranger tout ça, il faut un peu de colle !
•Scala
•Java
•Bash
•Php
•Javascript
•Python
•SQL
6. • On ne peut pas tout faire avec SQL.
Néanmoins, il faut absolument maitriser SQL.
• Bash est disponible presque partout.
Bon courage pour maintenir des scripts en Bash.
• Javascript pourrait être un choix intéressant…
• Go ? Le jeu d’échec ?
On n’a pas tant de choix !
8. Java <=Scala
• Scala ‘est’ Java 2
• Pr. Odersky a travaillé sur Java 1.5.
• Ce que l’on peut faire en Java est faisable en Scala.
• Ce que l’on fait en Scala est utilisable directement
par Java (Akka, Spark … ).
• L’écosystème ‘Java/JVM’ est très présent dans
l’industrie.
9. Ecosystème Java
Projets Data ou base de données utilisant Java/JVM :
• NiFi
• Beam
• Hadoop/HDFS en général
• Spark (SQL, ML, Streaming, …)
• Elasticsearch/Solr
• Cassandra
• Kafka
• Neo4j
• DeepLearning4j
• Weka
• …
Et :
• les connecteurs pour les bases de données
• les SDKs pour le cloud
• le WORA/‘WORF’
10. Attention à Scava
Scava, le Scala en mode Java :
• Lorsque l’on fait du Scala, il vaut mieux utiliser la
programmation fonctionnelle.
• Il vaut mieux du bon code Java que du mauvais code Scala.
11. Scala vs Python
C’est moins simple !
• Scala permet de faire du FP !
• Python est très bien outillé pour l’analyse de données.
12. Scala Python
Refactoring ++ -
Spark API + Extension API
Machine learning/stats en prod ++
Documentation + +
Communauté ici, ça va ++
DataViz Pourquoi faire ? Oh Yeah
Programmation
fonctionnelle
+ Meh
Perf + ça dépend
Facilité Meh +
15. Le FP
Le FP permet de :
• Raisonner sur les programmes.
• Faciliter la maintenance.
• Améliorer les performances.
• Évaluer de manière concurrente.
• Garantir les transformations.
• …
16. Le FP
x := x + 1
y.set(z)
A => B
+ A => C
= A => (B, C)
Pas de mutationComposition
17. A => (A => B) => B
F[A] => (A => B) => F[B]
F[A] => (A => F[B]) => F[B]
F[A] => F[A => B] => F[B]
F[A] => F[B] => F[(A,B)]
D => D => D
Void => D
B => (B => A => B) => (Stream[A] => B)
A => (A => A => A) => (List[A] => A)
A => F[A]
B => (B => A => B) => C => (C => A => C) => (Stream[A] => (B,C))
(A => Seq[(K,B)]) => (B => B => B) => (Seq[A] => Map[K,B])
18. Apprendre Scala
La littérature sur Scala est devenue
très qualitative.
• Un ouvrage pour commencer
l’apprentissage de Scala :
• Functional Programming Simplified
by Alvin Alexander
Atelier “Juste assez de Scala pour Spark”
• à venir avec le ‘Paris Data Eng’