SlideShare une entreprise Scribd logo
Scala pour le Data Eng
Paris Data Eng — Février 2019


Jonathan WINANDY
univalence.io
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)
• …
Qu’est-ce que le Data Eng ?
• Donner l’accès aux données.
• Pérenniser les ressources immatérielles.
• Dans un environnement … complexe !
Pour arranger tout ça, il faut un peu de colle !
•Scala
•Java
•Bash
•Php
•Javascript
•Python
•SQL
• 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 !
(Java vs Scala) vs Python
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.
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’
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.
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.
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 +
Efficacité de Scala
La programmation qui
fonctionne
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.
• …
Le FP
x := x + 1

y.set(z)
A => B
+ A => C
= A => (B, C)
Pas de mutationComposition
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])
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’
La conclusion
Une question ?


jonathan@univalence.io

Contenu connexe

PPTX
Tour d’horizon de scala
PDF
OSIS 2017 - Scala REX dans Rudder
PDF
Spark tools by Jonathan Winandy
PDF
Enib cours c.a.i. web - séance #5 : scala play! framework
PDF
Alphorm.com Formation Big Data avec Apache Spark: Initiation
PDF
RMLL 2013: Projet rudder, retour sur 4 ans de Scala
PDF
Introduction à scala
PDF
Université des langages scala
Tour d’horizon de scala
OSIS 2017 - Scala REX dans Rudder
Spark tools by Jonathan Winandy
Enib cours c.a.i. web - séance #5 : scala play! framework
Alphorm.com Formation Big Data avec Apache Spark: Initiation
RMLL 2013: Projet rudder, retour sur 4 ans de Scala
Introduction à scala
Université des langages scala

Plus de Paris Data Engineers ! (10)

PDF
Delta Lake OSS: Create reliable and performant Data Lake by Quentin Ambard
PDF
SCIO : Apache Beam API
PDF
Apache Beam de A à Z
PDF
REX : pourquoi et comment développer son propre scheduler
PDF
Deeplearning in production
PDF
Utilisation de MLflow pour le cycle de vie des projet Machine learning
PDF
Introduction à Apache Pulsar
PDF
10 things i wish i'd known before using spark in production
PDF
Change Data Capture with Data Collector @OVH
PDF
Building highly reliable data pipeline @datadog par Quentin François
Delta Lake OSS: Create reliable and performant Data Lake by Quentin Ambard
SCIO : Apache Beam API
Apache Beam de A à Z
REX : pourquoi et comment développer son propre scheduler
Deeplearning in production
Utilisation de MLflow pour le cycle de vie des projet Machine learning
Introduction à Apache Pulsar
10 things i wish i'd known before using spark in production
Change Data Capture with Data Collector @OVH
Building highly reliable data pipeline @datadog par Quentin François
Publicité

Scala pour le Data Engineering par Jonathan Winandy

  • 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.
  • 4. • Dans un environnement … complexe !
  • 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 !
  • 7. (Java vs Scala) vs Python
  • 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’