Scala es conocido por Big Data Analytics pero no es por análisis de datos / ciencia ¿es esto un error o está fundado?

Una búsqueda rápida en Google para “scala machine learning” arroja muchos resultados. Una que encontré particularmente interesante fue esta ¿Cuáles son las mejores bibliotecas de Scala para el aprendizaje automático? que responde tu pregunta

Como usuario de R y Python que tiene el lujo de tener la mayoría de los trabajos pesados ​​de datos manejados por nuestro increíble equipo de ingeniería de datos, rara vez tengo que preocuparme por usar un lenguaje como Scala. Además, no soy fanático de mezclar las palabras Big Data con Analytics o Science. Pero si tuviera que elegir un par de idiomas donde los grandes datos se cruzan con el análisis de datos y la ciencia de datos, esos serían Python y Scala.

La razón por la cual Python y R son más conocidos es doble:

  • Por un lado, la gran mayoría de las personas que aprendieron ciencia de datos en línea lo hicieron a través de MOOC que se centran principalmente en Python y R. Hay muy pocos que usan Scala e incluso menos (ninguno que yo recuerde, si conoce alguno, deje un comentario !) para Scala en Spark, donde realmente se produce la belleza de Scala ML en grandes cuerpos de datos.
  • Por otro lado, me parece que una configuración corporativa en la que se separa la ingeniería del análisis y la ciencia es más común que lo que a menudo se denomina científicos de datos de “pila completa” o de “extremo a extremo” que combinan ambas funciones. . No estoy completamente seguro de que esto sea cierto, pero parece que ese es el caso.

Dicho esto, Python y R comienzan desde un punto de ventaja. Son más fáciles de configurar y aprender que Scala y ambos son más buscados que Scala en el mercado laboral. Como ejemplo, no recomendaría a nadie que comience a codificar o practicar análisis de datos o aprendizaje automático con Scala, excepto si la persona tiene experiencia en Java.

tl; dr: Scala se usa ampliamente para la ciencia de datos de tipo ‘Big Data’, pero no para DS en general.

¿Por qué no hay más blogs / artículos de DS que mencionen Scala? Esa es simple, porque Scala no tiene buenas bibliotecas que proporcionen marcos de datos.
R lo hace fuera de la caja, y Python tiene pandas.

Scala no tiene nada de eso (hubo varios proyectos, como saddle / saddle o tixxit / framian, pero parece que no se mantienen activamente).

Lo interesante es que, si bien Scala no tiene un buen soporte de marco de datos, son una de las partes centrales de Spark . Spark también viene con un puñado de algoritmos de aprendizaje automático (SparkML / MLLib). Además, está escrito principalmente en Scala.
Incluso puede ejecutar Spark interactivamente con Zeppelin o Spark Notebook.

En general, Scala tiene un buen soporte para muchas herramientas relacionadas con Big Data : recuerde que Hadoop está escrito en Java, por lo que es bastante fácil integrar cosas de Hadoop con Scala, porque es un lenguaje JVM.

Esta sección puede ser omitida por alguien que no esté interesado en el aspecto del lenguaje de programación

También existe el hecho de que Scala está estáticamente tipado, pero tiene inferencia de tipos . Creo que la mayoría de los desarrolladores de software estarían de acuerdo en que es mucho más fácil mantener la base de código escrita en un lenguaje estáticamente escrito (más fácil de refactorizar, razonar sobre el código, etc.).
Muchas personas piensan que la escritura estática significa una escritura detallada similar a Java.
El sistema de tipos de Scala es mucho más agradable de trabajar que el de Java debido a la inferencia de tipos. Básicamente no tiene que escribir anotaciones de tipo en todas partes.
Es casi como si escribiera en Python, pero puede detectar algunos errores en tiempo de compilación y tener más confianza en que el código realmente se comporta de la manera que pretendía.

Dado que Scala es un lenguaje de programación Scala orientado a objetos y funcional, por lo tanto, puede hacer que las aplicaciones se ejecuten fácilmente en un comportamiento estable y eliminar todas las complicaciones que pueden causar causas externas. Al escribir programas en conceptos funcionales puros en lugar de seguir el procedimiento regular, el programa se convertirá en b más estable y protegido.

Scala con sus impuestos de sincronización simples y cortos evita que los programadores escriban una gran línea de programas y también les impide escribir mapas innecesarios, signos de puntuación y operaciones largas. Sus simples impuestos de sincronización reducen la carga de trabajo del programador. Dado que el programa que tomó largas filas para terminar en Java, ahora se puede lograr dentro de unas pocas líneas usando Scala.

Evitando lo explícito, el programa será expresivo, simple y poderoso. Los problemas complicados se solucionan antes de la compilación del código. Los programadores solo necesitan hacer un esfuerzo extra para aprender este idioma y los que se están aprendiendo, podrán escribir códigos complicados de manera más fácil y también pueden producir códigos más seguros con grandes funcionalidades.

En este mundo de big data, Hadoop es una tecnología popular y bajo demanda y Scala es una gran combinación para ello. Las bibliotecas se equilibran eficientemente con otras máquinas virtuales, ya que Escala es en sí misma una JVM. Se puede acceder directamente a las interfaces de programación de Scala y, por lo tanto, es mucho más elástica que otras interfaces, incluidas Perl y Ruby, Perl y Python, Python y Spark, etc. Como Hadoop es un sistema definitivo para el almacenamiento seguro de datos, alentándolo, incluso Scala ofrece un gran alcance para almacenar datos.