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 Eng

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 CommunityJean-Georges Perrin
 
[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 13032018Smile I.T is open
 
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...serge luca
 
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 Neo4jGabriel Pillet 🐙
 
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 !"OCTO Technology
 
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 Technet France
 
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 OnlineDenis Voituron
 
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 !VISEO
 
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...Nicolas Silberman
 
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 CloudTugdual Grall
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika
 
Paris Tug - Session d'octobre
Paris Tug - Session d'octobreParis Tug - Session d'octobre
Paris Tug - Session d'octobreGeoffrey Felix
 
Performance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPerformance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPrestaShop
 
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 2013serge luca
 
Geek Time Novembre 2016 : Neo4j
Geek Time Novembre 2016 : Neo4jGeek Time Novembre 2016 : Neo4j
Geek Time Novembre 2016 : Neo4jOLBATI
 
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...serge luca
 
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 6Jean-Michel Franco
 
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxMarc Bojoly
 
[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 hybridesGUSS
 
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! frameworkHoracio Gonzalez
 

Similaire à Scala pour le Data Eng (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 univalence

7 key recipes for data engineering
7 key recipes for data engineering7 key recipes for data engineering
7 key recipes for data engineeringunivalence
 
7 key recipes for data engineering
7 key recipes for data engineering7 key recipes for data engineering
7 key recipes for data engineeringunivalence
 
Streaming in Scala with Avro
Streaming in Scala with AvroStreaming in Scala with Avro
Streaming in Scala with Avrounivalence
 
Beyond tabular data
Beyond tabular dataBeyond tabular data
Beyond tabular dataunivalence
 
Introduction à kafka
Introduction à kafkaIntroduction à kafka
Introduction à kafkaunivalence
 
Data encoding and Metadata for Streams
Data encoding and Metadata for StreamsData encoding and Metadata for Streams
Data encoding and Metadata for Streamsunivalence
 
Introduction aux Macros
Introduction aux MacrosIntroduction aux Macros
Introduction aux Macrosunivalence
 
Big data forever
Big data foreverBig data forever
Big data foreverunivalence
 

Plus de univalence (8)

7 key recipes for data engineering
7 key recipes for data engineering7 key recipes for data engineering
7 key recipes for data engineering
 
7 key recipes for data engineering
7 key recipes for data engineering7 key recipes for data engineering
7 key recipes for data engineering
 
Streaming in Scala with Avro
Streaming in Scala with AvroStreaming in Scala with Avro
Streaming in Scala with Avro
 
Beyond tabular data
Beyond tabular dataBeyond tabular data
Beyond tabular data
 
Introduction à kafka
Introduction à kafkaIntroduction à kafka
Introduction à kafka
 
Data encoding and Metadata for Streams
Data encoding and Metadata for StreamsData encoding and Metadata for Streams
Data encoding and Metadata for Streams
 
Introduction aux Macros
Introduction aux MacrosIntroduction aux Macros
Introduction aux Macros
 
Big data forever
Big data foreverBig data forever
Big data forever
 

Scala pour le Data Eng

  • 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’