Patientons avec les nouveautés de Spark 3.0

On attend Spark 3.0.0 depuis la preview 2 de Noël 2019. Ici vous n'aurez pas la date de release, mais un résumé des principaux changements et nouveautés et connus à ce jour, que l'on pourra attendre de cette nouvelle version majeure de Spark. Je vous invite aussi à voir nos précédents articles sur Spark comme celui-ci sur Spark 2.4 et les autres.Disclaimer!!! Attention quelques liens sont donnés vers la preview 2 de Spark 3.0. Elle pourrait comporter des bugs et erreurs dans sa documentation.

ZIO : Programmation concurrente à la carte

On a déjà parlé plusieurs fois de ZIO sur le blog, (et on va continuer ! 😃).Au delà d'être la bibliothèque que l'on attendait pour faire du Functional Programming, ou une façon de faire du Scala sans rentrer dans le polymorphisme ad-hoc ou d'autres concepts fins néanmoins abstraits, ZIO ouvre un nouveau chemin de traverse dans la programmation concurrente.

Le feu, la roue, IO

Les applications doivent manipuler des effets pour être utiles, comme la communication avec le système, avec des utilisateurs ou un service tiers. Mais les effets créent des dépendances fortes dans le code qui ne favorisent pas sa maintenabilité. Le type IO permet de pallier cette difficulté.

Transparence référentielle - II : The rise of non-strict evaluation

Ayant précédemment abordé la transparence référentielle, nous nous posions précédemment des questions sur la prédictabilité du code dans un cadre contenant des effets (appel de service, accès aux données du système, variable globale...). Bien évidemment, les effets créent des dépendances fortes avec des éléments externes à l'application, ils ne facilitent pas cette prédictabilité et par conséquent, ils ne facilitent ni la testabilité et ni la maintenabilité d'une application et de ses composantes. Mais les effets sont un mal nécessaire et il faut composer notre code avec ! Alors comment faire ?En programmation fonctionnelle, dès que quelque chose ne semble a priori pas faisable, on passe par des fonctions et des paramètres. C'est exactement ce qu'on va faire avec les effets afin de retrouver la transparence référentielle.

Historisation de données avec Parquet

Nous allons voir aujourd'hui comment il est possible de compresser fortement des données historisées, par exemple une même table pour des dates différentes, donc en principe n'ayant pas un changement conséquent de données au quotidien en utilisant simplement le format de fichier Parquet, assez connu aujourd'hui.Introduisons tout d'abord le RLE pour Run-Length Encoding (codage par plages si l'OQLF est dans le coin), qui est un algorithme de compression de données sans pertes. Youhou !