Scala : A la conquête du Big Data ?

Jessica
ELP-2018
Published in
4 min readJun 26, 2018

Parmi les langages les plus populaires dans le Big Data on peut citer Java, R ou encore Python. Un langage moins connu occupe pourtant une place de plus en plus importante : Scala [1]. Il est utilisé entre autres par Linkedin ou Twitter.

Scala tire son nom de scalable langage ou langage adaptable. Ce langage est un langage open-source de haut niveau, utilisant le typage statique. Un point remarquable est qu’il intègre deux paradigmes habituellement opposés : la programmation fonctionnelle et la programmation orientée objet. Il a été conçu comme étant un “ better Java”.

Voyons à présent les principales caractéristiques de Scala.

Typage statique

Scala a un typage statique ; les variables ont toutes un type. Cela a pour avantage de détecter facilement certaines erreurs lors de la compilation.

Néanmoins, dans un programme Scala il n’est pas nécessaire de spécifier le type si le compilateur peut le deviner : cela s’appelle de l’inférence de types.

Scala intègre la programmation fonctionnelle et la programmation orientée objet

Scala possède les traits caractéristiques de la programmation fonctionnelle :

  • Considérer toutes les fonctions comme une valeur
  • La curryfication : on passe d’une fonction à plusieurs arguments à une fonction à un argument qui renvoie une fonction prenant les arguments restants.
  • L’immuabilité : ne pas permettre le changement d’état, une copie de la variable sera retournée
  • Evaluation paresseuse : on n’évalue pas la fonction tant que le résultat n’est pas nécessaire
  • Pattern Matching : il permet de chercher si une chaîne de caractères, un entier ou un type est présent comme on peut le voir dans l’exemple ci-dessous.[2]
Pattern matching

En Scala le pattern matching est particulièrement intéressant car il peut être utilisé pour définir des fonctions de manière récursive comme nous pouvons le voir avec la fonction factorielle.

Fonction et pattern matching

Scala en tant que langage de programmation orienté objet considère que tout est objet et que tous les comportements et types de ces derniers sont des classes et sous-classes.

Scala permet également la programmation impérative.

Scala est interopérable avec Java

Scala se compile en bytecode exécutable sur la machine virtuelle Java (JVM) , ce qui fournit la possibilité d’utiliser directement les bibliothèques Java, les sous-classes de Java ce qui est fort utile au vu de la taille importante de la communauté.

Scala est fait pour le parallélisme

Scala permet de produire des algorithmes bénéficiant d’un plus haut niveau d’abstraction que ceux réalisés dans un langage impératif et gère très bien la concurrence.

Cela se révèle très utile pour faire tourner un algorithme sur une machine ou en parallèle sur un cluster de machines sans apporter la moindre modification au code.

Le framework Apache Spark de traitement de données

Le framework Apache Spark est un des principaux avantages qui font de Scala un langage apprécié pour le Big Data.

Apache Spark est capable de faire du traitement en temps réel . Il utilise le parallélisation massive c’est-à-dire que les calculs sont distribués entre un grand nombre de machines. Les données sont chargées en RAM sur ces machines [3].

Ce framework peut être utilisé avec d’autres langages mais c’est en Scala, langage dans lequel il a été codé, qu’il offre le plus de possibilités.

Ce framework permet de réduire par 100 le temps de calcul par rapport à MapReduce d’Hadoop [3], qui fait souvent figure de référence dans le domaine du big data, et de mettre en œuvre des algorithmes qu’on ne pouvait jusqu’alors pas mettre en œuvre avec Map et Reduce.

On peut également utiliser ce framework pour analyser en temps réel les données reçues des différents capteurs dans le cadre de l’Internet des Objets.

Conclusion

Comme on peut le voir le framework Spark suscite un intérêt croissant comme le montre le nombre de recherches réalisées sur Google de janvier 2004 à juin 2018.

Evolution du nombre de recherche concerant Spark Scala

Néanmoins si on en croit le site Tiobe, qui liste les langages les plus utilisés à l’heure actuelle, Scala est bien loin du podium (23e place avec environ 0,66% d’utilisation !)

Scala est un langage qui continue à évoluer, une version 3 de Scala est prévue à l’horizon 2020. [4]

--

--