SlideShare a Scribd company logo
1 of 19
Download to read offline
Paris Data Eng — Octobre 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)
• …
UNIVALENCE: Data Sidekicks
3
Univalence : les acolytes de la
Data depuis 2015 !
Univalence.IO
• On améliore les activités de d’ingénierie de la donnée :
• Conseil
• Audit
• Blog
• Formation (Scala débutant/avancé, Kafka et Spark)
• Outils => SparkTools
Data made simple
Scala et Spark
• Objet
• FP
• Fonction f de A => B
• Complète

∀a ∈ A, f(a) ∈ B
• Déterministe

∀a ∈ A, f(a) == f(a)
• Sans effets de bord
• JVM + très bonne interop
• Composition de programmes
complexes
• Calcul distribué en
mémoire (+ disque)
• Interop avec les sources
de données
• Intégration avec les
orchestrateurs
• Architecture plus flexible
• Plus facile pour développer
• R / Python / Java / Scala
• ‘opencore’
• Aujourd’hui le projet ‘ParkaViz’ est privé !
• Mono Repo, Mono Branche
• https: //github.com/univalence/spark-tools/tree/master
• Pour :
• Scala 2.11 et 2.12
• Spark 2.0 à 2.4
• Intégration continue avec Circle-CI
• https: //circleci.com/gh/univalence/workflows/spark-tools
• Livraison sur bintray
• https: //bintray.com/univalence/univalence-jvm
Mono Repo + Mono Branch + Release Early
Chaque commit entraîne une
livraison des projets 

(si les tests passent)
0.3+130-4432b345
version+distance-hash
resolvers += "spark-test" at "http: //dl.bintray.com/univalence/univalence-jvm"
libraryDependencies += "io.univalence" %% "spark-test" % "0.3+79-4936e981" % Test
=> François : "SBT, monorepo et livraison"
Les projets
•Centrifuge => Parka
•Spark-Test
•Spark-ZIO
•Fenek
•Plumbus
Plumbus
• Un projet pour les expérimentations,
en particulier pour le blog.
• Eg :
• Le cogroup pour les dataframes en
Spark
• https: //github.com/univalence/
spark-tools/blob/master/plumbus/
src/main/scala/io/univalence/
plumbus/cogroup.scala
Spark-Test (1/2)
• Les tests avec Spark n’est pas si facile !
• Spark-Test permet de :
• Fournir une SparkSession (configurable)
• Créer facilement des dataframes
• Comparer les dataframes
• Rapidement
• En expliquant clairement les différences
Spark-Test (2/2)
class MyTestClass extends FunSuiteLike with SparkTest {
test("create df with json string") {
// create df from json string
val df = dfFromJsonString("{a:1}", "{a:2}")
}
}
val dfUT = Seq(1, 2, 3).toDF("id")
val dfExpected = Seq(2, 1, 4).toDF("id")
dfUT.assertEquals(dfExpected)
in value at id, 2 was not equal to 1
dataframe({id: 1})
dataframe({id: 2})
in value at id, 1 was not equal to 2
dataframe({id: 2})
dataframe({id: 1})
in value at id, 4 was not equal to 3
dataframe({id: 3})
dataframe({id: 4})
=> Harrison : "Tests Spark simples et efficaces avec Spark-Test"
Fenek (~alpha)
• Permet de modéliser des pipelines colonnes
par colonnes.
• Test des colonnes séparément.
• Meilleur gestion des “UDF”s.
Spark-ZIO
• Parce que l’API de Spark n’est pas (assez) pure !
• API plus propre
• Meilleur code pour les pipelines Spark
• Gestion de la SparkSession, du Load, du Write, …
• Permet d’améliorer la performance des petits pipelines.
• Mais aussi du ‘retry’, ‘recover’, ‘scheduling’, …
• A venir, gestion des appels “REST” au milieu d’un job
spark.
=> Phil : "Apprivoiser Spark avec ZIO"
Centrifuge -> Parka
• Outils de gestion de la qualité des données :
• Ligne à ligne
• Globale (DeltaQA)
->
Parka / DeltaQA
• Calcul d'indicateurs pour les tests de non-régression.
• Peut-on comparer f’ (la nouvelle transformation) et f
pour s’assurer que f’ est meilleure ?
f f’
Update
À la main ?
1. On prend un échantillon S
2. On map avec f => R
3. On map avec f’ => R’
4. ???
5. Profit !
Avec Parka
Feuille de route
• Parka
• Meilleures analyses
• Données imbriquées
• …
• ParkaViz as a Service (gratuit ?)
• Intégration des projets encore dans les cartons
• Ex. SchemaUtils
• Avoir des contributeurs externes à Univalence
Une question ?


jonathan@univalence.io

More Related Content

What's hot

Delta Lake, un vernis pour parquet
Delta Lake, un vernis pour parquetDelta Lake, un vernis pour parquet
Delta Lake, un vernis pour parquetAlban Phélip
 
Architecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KArchitecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KJulien Anguenot
 
Datalake de l'idée à la plateforme
Datalake de l'idée à la plateformeDatalake de l'idée à la plateforme
Datalake de l'idée à la plateformeNovencia Groupe
 
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Ippon
 
Usi 2013 - NoSql les defis à relever
Usi 2013 -  NoSql les defis à releverUsi 2013 -  NoSql les defis à relever
Usi 2013 - NoSql les defis à releverDjamel Zouaoui
 
Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016Duyhai Doan
 
Track 2 - Atelier 1 - Big data analytics présenté avec Intel
Track 2 - Atelier 1 - Big data analytics présenté avec IntelTrack 2 - Atelier 1 - Big data analytics présenté avec Intel
Track 2 - Atelier 1 - Big data analytics présenté avec IntelAmazon Web Services
 
HUG France - 20160114 industrialisation_process_big_data CanalPlus
HUG France -  20160114 industrialisation_process_big_data CanalPlusHUG France -  20160114 industrialisation_process_big_data CanalPlus
HUG France - 20160114 industrialisation_process_big_data CanalPlusModern Data Stack France
 
GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)Neo4j
 
DataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le CloudDataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le CloudVictor Coustenoble
 
AWS Internet of Things and Machine Learning
AWS Internet of Things and Machine LearningAWS Internet of Things and Machine Learning
AWS Internet of Things and Machine LearningAmazon Web Services
 
SQL Saturday Paris 2015 - Polybase
SQL Saturday Paris 2015 - PolybaseSQL Saturday Paris 2015 - Polybase
SQL Saturday Paris 2015 - PolybaseRomain Casteres
 
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamielParis Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamielModern Data Stack France
 
Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Victor Coustenoble
 
DataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft TechdaysDataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft TechdaysVictor Coustenoble
 
Cartographie du big data
Cartographie du big dataCartographie du big data
Cartographie du big dataacogoluegnes
 
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réelMathieu DESPRIEE
 
Oxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataOxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataLudovic Piot
 

What's hot (20)

Delta Lake, un vernis pour parquet
Delta Lake, un vernis pour parquetDelta Lake, un vernis pour parquet
Delta Lake, un vernis pour parquet
 
Architecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KArchitecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.K
 
Datalake de l'idée à la plateforme
Datalake de l'idée à la plateformeDatalake de l'idée à la plateforme
Datalake de l'idée à la plateforme
 
Azure Data Factory-Rebuild 2017
Azure Data Factory-Rebuild 2017 Azure Data Factory-Rebuild 2017
Azure Data Factory-Rebuild 2017
 
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
 
Usi 2013 - NoSql les defis à relever
Usi 2013 -  NoSql les defis à releverUsi 2013 -  NoSql les defis à relever
Usi 2013 - NoSql les defis à relever
 
Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016
 
Track 2 - Atelier 1 - Big data analytics présenté avec Intel
Track 2 - Atelier 1 - Big data analytics présenté avec IntelTrack 2 - Atelier 1 - Big data analytics présenté avec Intel
Track 2 - Atelier 1 - Big data analytics présenté avec Intel
 
Hug janvier 2016 -EDF
Hug   janvier 2016 -EDFHug   janvier 2016 -EDF
Hug janvier 2016 -EDF
 
HUG France - 20160114 industrialisation_process_big_data CanalPlus
HUG France -  20160114 industrialisation_process_big_data CanalPlusHUG France -  20160114 industrialisation_process_big_data CanalPlus
HUG France - 20160114 industrialisation_process_big_data CanalPlus
 
GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)
 
DataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le CloudDataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le Cloud
 
AWS Internet of Things and Machine Learning
AWS Internet of Things and Machine LearningAWS Internet of Things and Machine Learning
AWS Internet of Things and Machine Learning
 
SQL Saturday Paris 2015 - Polybase
SQL Saturday Paris 2015 - PolybaseSQL Saturday Paris 2015 - Polybase
SQL Saturday Paris 2015 - Polybase
 
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamielParis Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
 
Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?
 
DataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft TechdaysDataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft Techdays
 
Cartographie du big data
Cartographie du big dataCartographie du big data
Cartographie du big data
 
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
 
Oxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataOxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigData
 

Similar to Spark tools by Jonathan Winandy

Scala pour le Data Eng
Scala pour le Data EngScala pour le Data Eng
Scala pour le Data Engunivalence
 
Scala pour le Data Engineering par Jonathan Winandy
Scala pour le Data Engineering par Jonathan WinandyScala pour le Data Engineering par Jonathan Winandy
Scala pour le Data Engineering par Jonathan WinandyParis Data Engineers !
 
Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines
Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines
Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines Databricks
 
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) univalence
 
SiriusCon - French Department of Defense
SiriusCon - French Department of DefenseSiriusCon - French Department of Defense
SiriusCon - French Department of DefenseObeo
 
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
 
Gardez vos projets R organisés avec le package "project"
Gardez vos projets R organisés avec le package "project"Gardez vos projets R organisés avec le package "project"
Gardez vos projets R organisés avec le package "project"parisraddicts
 
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
 
P8 03 presentation
P8 03 presentationP8 03 presentation
P8 03 presentationrajiasellami
 
Découverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet SpartanDécouverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet SpartanMicrosoft
 
Datastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingDatastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingVictor Coustenoble
 
Distributed computing with Spark 2.x
Distributed computing with Spark 2.xDistributed computing with Spark 2.x
Distributed computing with Spark 2.xDr Hajji Hicham
 
0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdfOmbotimbe Salifou
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsMICHRAFY MUSTAFA
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdfOuailChoukhairi
 
Presentation intis 2017 version27112017
Presentation intis 2017 version27112017Presentation intis 2017 version27112017
Presentation intis 2017 version27112017Dr Hajji Hicham
 
Spark - au dela du dataframe avec Tungsten et Catalyst
Spark - au dela du dataframe avec Tungsten et CatalystSpark - au dela du dataframe avec Tungsten et Catalyst
Spark - au dela du dataframe avec Tungsten et CatalystMathieu Goeminne
 

Similar to Spark tools by Jonathan Winandy (20)

Scala pour le Data Eng
Scala pour le Data EngScala pour le Data Eng
Scala pour le Data Eng
 
Scala pour le Data Engineering par Jonathan Winandy
Scala pour le Data Engineering par Jonathan WinandyScala pour le Data Engineering par Jonathan Winandy
Scala pour le Data Engineering par Jonathan Winandy
 
Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines
Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines
Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines
 
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
 
SiriusCon - French Department of Defense
SiriusCon - French Department of DefenseSiriusCon - French Department of Defense
SiriusCon - French Department of Defense
 
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
 
Gardez vos projets R organisés avec le package "project"
Gardez vos projets R organisés avec le package "project"Gardez vos projets R organisés avec le package "project"
Gardez vos projets R organisés avec le package "project"
 
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
 
P8 03 presentation
P8 03 presentationP8 03 presentation
P8 03 presentation
 
Découverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet SpartanDécouverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet Spartan
 
Spark - Ippevent 19-02-2015
Spark - Ippevent 19-02-2015Spark - Ippevent 19-02-2015
Spark - Ippevent 19-02-2015
 
Datastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingDatastax Cassandra + Spark Streaming
Datastax Cassandra + Spark Streaming
 
Distributed computing with Spark 2.x
Distributed computing with Spark 2.xDistributed computing with Spark 2.x
Distributed computing with Spark 2.x
 
0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & Actions
 
Une Introduction à R
Une Introduction à RUne Introduction à R
Une Introduction à R
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
 
Presentation intis 2017 version27112017
Presentation intis 2017 version27112017Presentation intis 2017 version27112017
Presentation intis 2017 version27112017
 
Spark - au dela du dataframe avec Tungsten et Catalyst
Spark - au dela du dataframe avec Tungsten et CatalystSpark - au dela du dataframe avec Tungsten et Catalyst
Spark - au dela du dataframe avec Tungsten et Catalyst
 
Play 2: java et scala
Play 2: java et scalaPlay 2: java et scala
Play 2: java et scala
 

More from Paris Data Engineers !

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 AmbardParis Data Engineers !
 
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 schedulerParis Data Engineers !
 
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 learningParis Data Engineers !
 
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 productionParis Data Engineers !
 
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 @OVHParis Data Engineers !
 
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çoisParis Data Engineers !
 

More from 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
 

Spark tools by Jonathan Winandy

  • 1. Paris Data Eng — Octobre 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. UNIVALENCE: Data Sidekicks 3 Univalence : les acolytes de la Data depuis 2015 !
  • 4. Univalence.IO • On améliore les activités de d’ingénierie de la donnée : • Conseil • Audit • Blog • Formation (Scala débutant/avancé, Kafka et Spark) • Outils => SparkTools Data made simple
  • 5. Scala et Spark • Objet • FP • Fonction f de A => B • Complète
 ∀a ∈ A, f(a) ∈ B • Déterministe
 ∀a ∈ A, f(a) == f(a) • Sans effets de bord • JVM + très bonne interop • Composition de programmes complexes • Calcul distribué en mémoire (+ disque) • Interop avec les sources de données • Intégration avec les orchestrateurs • Architecture plus flexible • Plus facile pour développer • R / Python / Java / Scala
  • 6. • ‘opencore’ • Aujourd’hui le projet ‘ParkaViz’ est privé ! • Mono Repo, Mono Branche • https: //github.com/univalence/spark-tools/tree/master • Pour : • Scala 2.11 et 2.12 • Spark 2.0 à 2.4 • Intégration continue avec Circle-CI • https: //circleci.com/gh/univalence/workflows/spark-tools • Livraison sur bintray • https: //bintray.com/univalence/univalence-jvm
  • 7. Mono Repo + Mono Branch + Release Early Chaque commit entraîne une livraison des projets 
 (si les tests passent) 0.3+130-4432b345 version+distance-hash resolvers += "spark-test" at "http: //dl.bintray.com/univalence/univalence-jvm" libraryDependencies += "io.univalence" %% "spark-test" % "0.3+79-4936e981" % Test => François : "SBT, monorepo et livraison"
  • 8. Les projets •Centrifuge => Parka •Spark-Test •Spark-ZIO •Fenek •Plumbus
  • 9. Plumbus • Un projet pour les expérimentations, en particulier pour le blog. • Eg : • Le cogroup pour les dataframes en Spark • https: //github.com/univalence/ spark-tools/blob/master/plumbus/ src/main/scala/io/univalence/ plumbus/cogroup.scala
  • 10. Spark-Test (1/2) • Les tests avec Spark n’est pas si facile ! • Spark-Test permet de : • Fournir une SparkSession (configurable) • Créer facilement des dataframes • Comparer les dataframes • Rapidement • En expliquant clairement les différences
  • 11. Spark-Test (2/2) class MyTestClass extends FunSuiteLike with SparkTest { test("create df with json string") { // create df from json string val df = dfFromJsonString("{a:1}", "{a:2}") } } val dfUT = Seq(1, 2, 3).toDF("id") val dfExpected = Seq(2, 1, 4).toDF("id") dfUT.assertEquals(dfExpected) in value at id, 2 was not equal to 1 dataframe({id: 1}) dataframe({id: 2}) in value at id, 1 was not equal to 2 dataframe({id: 2}) dataframe({id: 1}) in value at id, 4 was not equal to 3 dataframe({id: 3}) dataframe({id: 4}) => Harrison : "Tests Spark simples et efficaces avec Spark-Test"
  • 12. Fenek (~alpha) • Permet de modéliser des pipelines colonnes par colonnes. • Test des colonnes séparément. • Meilleur gestion des “UDF”s.
  • 13. Spark-ZIO • Parce que l’API de Spark n’est pas (assez) pure ! • API plus propre • Meilleur code pour les pipelines Spark • Gestion de la SparkSession, du Load, du Write, … • Permet d’améliorer la performance des petits pipelines. • Mais aussi du ‘retry’, ‘recover’, ‘scheduling’, … • A venir, gestion des appels “REST” au milieu d’un job spark. => Phil : "Apprivoiser Spark avec ZIO"
  • 14. Centrifuge -> Parka • Outils de gestion de la qualité des données : • Ligne à ligne • Globale (DeltaQA) ->
  • 15. Parka / DeltaQA • Calcul d'indicateurs pour les tests de non-régression. • Peut-on comparer f’ (la nouvelle transformation) et f pour s’assurer que f’ est meilleure ? f f’ Update
  • 16. À la main ? 1. On prend un échantillon S 2. On map avec f => R 3. On map avec f’ => R’ 4. ??? 5. Profit !
  • 18. Feuille de route • Parka • Meilleures analyses • Données imbriquées • … • ParkaViz as a Service (gratuit ?) • Intégration des projets encore dans les cartons • Ex. SchemaUtils • Avoir des contributeurs externes à Univalence