Sé que Spark está completamente integrado con Scala. Su caso de uso es específicamente para grandes conjuntos de datos. ¿Qué otras herramientas tienen buen soporte de Scala? ¿Es Scala el más adecuado para conjuntos de datos más grandes? ¿O también es adecuado para conjuntos de datos más pequeños?
scalability
scala
Sheldonkreger
fuente
fuente
Respuestas:
Re: tamaño de los datos
La respuesta corta
Scala funciona tanto para datos pequeños como grandes, pero su creación y desarrollo está motivado por la necesidad de algo escalable. Scala es un acrónimo de "lenguaje escalable" .
La respuesta larga
Scala es un lenguaje de programación funcional que se ejecuta en jvm . La parte 'funcional' de esto es una diferencia fundamental en el lenguaje que te hace pensar de manera diferente sobre la programación. Si le gusta esa forma de pensar, le permite trabajar rápidamente con datos pequeños. Te guste o no, los lenguajes funcionales son fundamentalmente más fáciles de escalar masivamente. La pieza jvm también es importante porque jvm está básicamente en todas partes y, por lo tanto, el código Scala puede ejecutarse básicamente en todas partes. (Tenga en cuenta que hay muchos otros idiomas escritos en jvm y muchos otros lenguajes de programación funcionales , y los idiomas más allá de Scala aparecen en ambas listas).
Esta charla ofrece una buena visión general de la motivación detrás de Scala.
Re: otras herramientas que tienen buen soporte de Scala:
Como mencionó, Spark (procesamiento por lotes distribuible mejor en algoritmos iterativos que su contraparte) es muy importante. Con Spark viene sus bibliotecas Mllib para aprendizaje automático y GraphX para gráficos. Según lo mencionado por Erik Allik y Tris Nefzger, Akka y Factorie existen. También hay Play .
En general, no puedo decir si hay un caso de uso específico por el que está cavando (si es así, haga que sea parte de su pregunta), o simplemente quiera una encuesta de herramientas de big data y conozca un poco a Scala y quiera para comenzar por ahí.
fuente
ScalaNLP es un conjunto de bibliotecas de computación numérica y aprendizaje automático con soporte para tareas comunes de procesamiento de lenguaje natural. http://www.scalanlp.org/
Aquí hay una lista recientemente actualizada de bibliotecas scala para ciencia de datos: https://www.datasciencecentral.com/profiles/blogs/top-15-scala-libraries-for-data-science-in-2018-1
fuente
Desde escuchar las presentaciones de Martin Odersky, el creador de Scala, es especialmente adecuado para construir sistemas altamente escalables al aprovechar las construcciones de programación funcional en conjunción con la orientación a objetos y la sintaxis flexible. También es útil para el desarrollo de sistemas pequeños y la creación rápida de prototipos porque requiere menos líneas de código que otros lenguajes y tiene un modo interactivo para una retroalimentación rápida. Un marco de Scala notable es Akka, que utiliza el modelo de actor de cómputo concurrente. Muchas de las presentaciones de Odersky están en YouTube y hay una lista de herramientas implementadas con Scala en wiki.scala-lang.org.
Un punto implícito es que las herramientas y los marcos escritos en Scala tienen inherentemente integración con Scala y generalmente una API de Scala. Luego, se pueden agregar otras API para admitir otros lenguajes que comienzan con Java, ya que Scala ya está integrado y, de hecho, depende de manera crítica de Java. Si una herramienta o marco no está escrito en Scala, es poco probable que ofrezca algún soporte para Scala. Por eso, en respuesta a su pregunta, he señalado hacia herramientas y marcos escritos en Scala y Spark es un ejemplo. Sin embargo, Scala actualmente tiene una participación menor en el mercado, pero su tasa de adopción está creciendo y la alta tasa de crecimiento de Spark mejorará eso. La razón por la que uso Scala es porque la API de Spark para Scala es más rica que las API de Java y Python.
Las razones principales por las que prefiero Scala en general es porque es mucho más expresivo que Java porque permite y facilita el uso de funciones como objetos y valores al tiempo que conserva la modularidad orientada a objetos, lo que permite el desarrollo de programas complejos y correctos con mucho menos código que Java que Lo había preferido por su uso generalizado, claridad y excelente documentación.
fuente
Scala es adecuado tanto para aplicaciones de ciencia de datos grandes como pequeñas. Considere DynaML si está interesado en probar una biblioteca de aprendizaje automático que se integre bien con Apache Spark. Todavía está en pañales, por así decirlo, en términos de número de modelos ofrecidos, pero lo compensa con una API de aprendizaje automático amplia y flexible.
Para echar un vistazo a algunos ejemplos de casos de uso, considere (más de dónde vino)
Descargo de responsabilidad: soy el autor de DynaML
fuente