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?
scalability
scala
sheldonkreger
la source
la source
Réponses:
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à.
la source
ScalaNLP est une suite de bibliothèques d'apprentissage automatique et de calcul numérique prenant en charge les tâches courantes de traitement du langage naturel. http://www.scalanlp.org/
Voici une liste récemment mise à jour des bibliothèques scala pour la science des données: https://www.datasciencecentral.com/profiles/blogs/top-15-scala-libraries-for-data-science-in-2018-1
la source
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.
la source
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)
Avertissement: je suis l'auteur de DynaML
la source