SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
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

Similaire à Scala pour le Data Engineering par Jonathan Winandy

Enib cours c.a.i. web - séance #5 : scala play! framework
Enib   cours c.a.i. web - séance #5 : scala play! frameworkEnib   cours c.a.i. web - séance #5 : scala play! framework
Enib cours c.a.i. web - séance #5 : scala play! framework
Horacio Gonzalez
 

Similaire à Scala pour le Data Engineering par Jonathan Winandy (20)

Spark Summit Europe Wrap Up and TASM State of the Community
Spark Summit Europe Wrap Up and TASM State of the CommunitySpark Summit Europe Wrap Up and TASM State of the Community
Spark Summit Europe Wrap Up and TASM State of the Community
 
[Smile] atelier spark - salon big data 13032018
[Smile]   atelier spark - salon big data 13032018[Smile]   atelier spark - salon big data 13032018
[Smile] atelier spark - salon big data 13032018
 
Haute disponibilité et Reprise sur Incident en SharePoint 2013 Journées SQL S...
Haute disponibilité et Reprise sur Incident en SharePoint 2013 Journées SQL S...Haute disponibilité et Reprise sur Incident en SharePoint 2013 Journées SQL S...
Haute disponibilité et Reprise sur Incident en SharePoint 2013 Journées SQL S...
 
Importer 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jImporter 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4j
 
La Duck Conf 2018 : "Une infrastructure peut en cacher une autre !"
La Duck Conf 2018 : "Une infrastructure peut en cacher une autre !"La Duck Conf 2018 : "Une infrastructure peut en cacher une autre !"
La Duck Conf 2018 : "Une infrastructure peut en cacher une autre !"
 
Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...
Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...
Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...
 
Microsoft Experieces 2016 - Retour d’expériences sur TFS Online
Microsoft Experieces 2016 - Retour d’expériences sur TFS OnlineMicrosoft Experieces 2016 - Retour d’expériences sur TFS Online
Microsoft Experieces 2016 - Retour d’expériences sur TFS Online
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
 
Devoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudDevoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le Cloud
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_ml
 
Paris Tug - Session d'octobre
Paris Tug - Session d'octobreParis Tug - Session d'octobre
Paris Tug - Session d'octobre
 
Performance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPerformance et optimisation de PrestaShop
Performance et optimisation de PrestaShop
 
Ce que tout DBA doit savoir sur SQL Server et SharePoint 2013
Ce que tout DBA doit savoir sur SQL Server et SharePoint 2013Ce que tout DBA doit savoir sur SQL Server et SharePoint 2013
Ce que tout DBA doit savoir sur SQL Server et SharePoint 2013
 
Geek Time Novembre 2016 : Neo4j
Geek Time Novembre 2016 : Neo4jGeek Time Novembre 2016 : Neo4j
Geek Time Novembre 2016 : Neo4j
 
SharePoint2013 Haute Disponibilité et Reprise sur incidents (HA-DR)-Casablanc...
SharePoint2013 Haute Disponibilité et Reprise sur incidents (HA-DR)-Casablanc...SharePoint2013 Haute Disponibilité et Reprise sur incidents (HA-DR)-Casablanc...
SharePoint2013 Haute Disponibilité et Reprise sur incidents (HA-DR)-Casablanc...
 
Découvrez les nouvelles fonctionnalités de Talend 6
Découvrez les nouvelles fonctionnalités de Talend 6Découvrez les nouvelles fonctionnalités de Talend 6
Découvrez les nouvelles fonctionnalités de Talend 6
 
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptx
 
[JSS2015] Power BI: Nouveautés archi et hybrides
[JSS2015] Power BI: Nouveautés archi et hybrides[JSS2015] Power BI: Nouveautés archi et hybrides
[JSS2015] Power BI: Nouveautés archi et hybrides
 
Enib cours c.a.i. web - séance #5 : scala play! framework
Enib   cours c.a.i. web - séance #5 : scala play! frameworkEnib   cours c.a.i. web - séance #5 : scala play! framework
Enib cours c.a.i. web - séance #5 : scala play! framework
 

Plus de Paris Data Engineers !

Plus de Paris Data Engineers ! (10)

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

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’