PSUG #91 - Spark Dataset: je t'aime... moi non plus & Poupées Russes
Bonjour à tou•te•s
Pour ce meetup de septembre, Ebiznext nous accueille pour parler de spark avec Raphaël Luta & Choucri Fahed et de recursion schemes avec Valentin Kasas.
Spark Dataset: je t’aime… moi non plus
L’API Dataset dans Spark 2 combine en théorie le meilleur des 2 mondes : la performance et l’expressivité des Dataframe en conservant la modélisation riche et le typage fort des RDD.
A l’issue d’un gros projet basé sur cette API, nous avons pu constaté qu’elle présente de nombreuses ““fonctionnalités inattendues”” et nous proposons un retour d’expérience sur les avantages et les pièges de son utilisation, en particulier pour un développeur Scala.
Si vous démarrez un nouveau projet Spark ou que vous vous interrogez sur ses APIs, cette présentation vous permettra de (re)partir du bon pied et ménager votre santé physique et mentale !
Ces 10000 case classes que je n’ai pas écrites
Quand on doit valider la donnée en entrée de son job Spark ou avant d’écrire ou lire dans/depuis un topic Kafka, le développeur Scala averti se tourne vers une solution à base de case classes et de dérivation automatique (shapeless, magnolia, scalaz-deriving, et consorts).
Mais que feraient 5 développeurs Scala (relativement) avertis s’ils avaient à valider des données provenant d’une centaine de sources différentes, chacune ayant une centaine de structures de données différentes, avec seulement 6 mois pour livrer le tout en partant de rien ?
On n’a pas essayé, mais on s’est dit qu’écrire 10000 case classes et compiler les validateurs (même avec magniolia), on n’aurait pas eu le temps.
Du coup on a trouvé une solution à base de maths (ryoshka), un truc appelé “recursion schemes” et ça nous a permis faire toutes ces validations et beaucoup d’autres choses qu’on n’aurait pas imaginé initialement.