Outils de science des données utilisant Scala

15

Je sais que Spark est entièrement intégré à Scala. Son cas d'utilisation est spécifiquement pour les grands ensembles de données. Quels autres outils ont un bon support Scala? Scala est-il le mieux adapté aux ensembles de données plus volumineux? Ou est-il également adapté aux petits ensembles de données?

sheldonkreger
la source
2
Vous souhaitez également en savoir plus sur les kits d'outils d'apprentissage automatique tels que par exemple FACTORIE?
Erik Kaplun
Cela semble pertinent pour ma question, n'hésitez pas à en partager davantage.
sheldonkreger

Réponses:

11

Re: taille des données

La réponse courte

Scala fonctionne pour les petites et les grandes données, mais sa création et son développement sont motivés par le besoin de quelque chose d'évolutif. Scala est un acronyme pour «langage évolutif» .

La réponse longue

Scala est un langage de programmation fonctionnel qui s'exécute sur le jvm . La partie «fonctionnelle» de cela est une différence fondamentale dans le langage qui vous fait penser différemment à la programmation. Si vous aimez cette façon de penser, cela vous permet de travailler rapidement avec de petites données. Que cela vous plaise ou non, les langages fonctionnels sont fondamentalement plus faciles à mettre à l'échelle massivement. La pièce jvm est également importante car la jvm est essentiellement partout et, par conséquent, le code Scala peut fonctionner pratiquement partout. (Notez qu'il existe de nombreux autres langages écrits sur le jvm et de nombreux autres langages de programmation fonctionnels , et des langages au-delà de Scala apparaissent dans les deux listes.)

Cet exposé donne un bon aperçu de la motivation derrière Scala.

Re: autres outils qui ont un bon support Scala:

Comme vous l'avez mentionné, Spark (traitement par lots distribuable mieux aux algorithmes itératifs que son homologue) est un gros problème. Avec Spark vient ses bibliothèques Mllib pour l'apprentissage automatique et GraphX pour les graphiques. Comme mentionné par Erik Allik et Tris Nefzger, Akka et Factorie existent. Il y a aussi Play .

En général, je ne peux pas dire s'il y a un cas d'utilisation spécifique pour lequel vous creusez (si oui, faites-en une partie de votre question), ou si vous voulez juste une enquête sur les outils de Big Data et que vous connaissez un peu Scala et que vous voulez commencer par là.

TheGrimmScientist
la source
4

De l'écoute aux présentations de Martin Odersky, le créateur de Scala, il est particulièrement bien adapté à la construction de systèmes hautement évolutifs en tirant parti des constructions de programmation fonctionnelle en conjonction avec l'orientation des objets et la syntaxe flelxible. Il est également utile pour le développement de petits systèmes et le prototypage rapide car il prend moins de lignes de code que certains autres langages et il dispose d'un mode interactif pour un retour rapide. Un cadre Scala notable est Akka qui utilise le modèle d'acteur du calcul simultané. De nombreuses présentations d'Odersky sont sur YouTube et il existe une liste d'outils mis en œuvre avec Scala sur wiki.scala-lang.org.

Un point implicite est que les outils et les frameworks écrits en Scala ont intrinsèquement une intégration Scala et généralement une API Scala. Ensuite, d'autres API peuvent être ajoutées pour prendre en charge d'autres langages commençant par Java puisque Scala est déjà intégré et dépend en fait de manière critique de Java. Si un outil ou un framework n'est pas écrit en Scala, il est peu probable qu'il offre un support pour Scala. C'est pourquoi, en réponse à votre question, j'ai indiqué que les outils et les cadres écrits en Scala et Spark en sont un exemple. Cependant, Scala détient actuellement une part mineure du marché, mais son taux d'adoption augmente et le taux de croissance élevé de Spark le renforcera. La raison pour laquelle j'utilise Scala est que l'API Spark pour Scala est plus riche que les API Java et Python.

La principale raison pour laquelle je préfère Scala est généralement parce qu'il est beaucoup plus expressif que Java car il permet et facilite l'utilisation de fonctions en tant qu'objets et valeurs tout en conservant une modularité orientée objet, ce qui permet le développement de programmes complexes et corrects avec beaucoup moins de code que Java qui J'avais préféré en raison de l'utilisation répandue, de la clarté et de l'excellente documentation.

Tris Nefzger
la source
1
Ce sont d'excellentes informations sur Scala en général, mais je recherche des informations sur des outils ou des cadres spécifiques de science des données qui intègrent Scala, et pourquoi Scala est un bon langage pour ces outils à utiliser.
sheldonkreger
0

Scala convient aux applications de science des données, grandes et petites. Pensez à DynaML si vous êtes intéressé à essayer une bibliothèque d'apprentissage automatique qui s'intègre bien avec Apache Spark. Il est encore à ses balbutiements pour ainsi dire en termes de nombre de modèles proposés, mais il le compense par une API d'apprentissage machine large et flexible.

Pour jeter un oeil à quelques exemples d'utilisation, considérez (plus d'où cela vient)

  1. Identification du système - Centrale électrique d'Abott

Avertissement: je suis l'auteur de DynaML

Mandar Chandorkar
la source
S'il s'agit de votre projet, veuillez noter votre affiliation.
Sean Owen