Scala se ha consolidado como un lenguaje de programación versátil que combina enfoques orientados a objetos y funcionales. Al ejecutarse en la Máquina Virtual de Java (JVM), garantiza una compatibilidad fluida con las bibliotecas de Java, ofreciendo una experiencia de desarrollo concisa y escalable. Este lenguaje se ha destacado especialmente en el ámbito de la computación distribuida y el procesamiento de grandes datos, con el marco Apache Spark, construido en Scala, siendo un claro ejemplo de su potencial. Sin embargo, a pesar de que Amazon SageMaker Studio ofrece un soporte integral para flujos de trabajo de ciencia de datos y aprendizaje automático basados en Python, actualmente no incluye soporte nativo para el desarrollo en Scala.
La integración de Scala es particularmente valiosa para quienes trabajan con Spark o realizan tareas de procesamiento de datos complejas, ya que permite una exploración y desarrollo basados en Scala junto a herramientas centradas en Python. La inclusión del kernel Almond amplía la versatilidad de SageMaker Studio, permitiendo a los equipos mantener sus flujos de trabajo preferidos en Scala mientras se benefician de las capacidades de aprendizaje automático y computación en la nube que el servicio ofrece.
Las organizaciones y equipos que operan en entornos multilenguaje, especialmente aquellos que han invertido considerablemente en flujos de trabajo de procesamiento de datos basado en Scala y Spark, enfrentan retos al utilizar SageMaker Studio debido a la falta de soporte incorporado. Los desarrolladores deben mantener entornos separados o recurrir a soluciones alternativas, lo que interrumpe los flujos de trabajo y reduce la productividad. Aquellos que prefieren las características de tipado fuerte y programación funcional de Scala se ven obligados a adaptarse a Python o cambiar de plataforma, lo que incrementa la carga de desarrollo y puede dar lugar a inconsistencias en las canalizaciones de producción. Además, los equipos que han construido amplias bases de código en Scala para su procesamiento de datos enfrentan complejidades adicionales al intentar integrar su trabajo existente con las capacidades de aprendizaje automático de SageMaker, lo que retrasa la adopción de funciones avanzadas o requiere un esfuerzo adicional de ingeniería para alinear sus flujos de trabajo.
Este artículo ofrece una guía integral sobre cómo integrar el kernel Almond en SageMaker Studio, presentando una solución para el desarrollo en Scala dentro de la plataforma.
El kernel Almond es un proyecto de código abierto que proporciona soporte para Scala en los cuadernos de Jupyter, integrando eficazmente Scala en entornos de análisis de datos interactivos. La instalación del kernel Almond se realiza utilizando Coursier, un instalador de aplicaciones y gestor de artefactos de Scala ampliamente recomendado. Coursier simplifica y automatiza el proceso de descarga, gestión e instalación de bibliotecas y dependencias de Scala. Su mecanismo de resolución de dependencias asegura que los usuarios tengan versiones consistentes y compatibles de las bibliotecas, reduciendo significativamente los conflictos y las complejidades de instalación.
Para comenzar a trabajar con este proyecto, es necesario tener acceso a JupyterLab (versión 2.4.1 o superior) en SageMaker Studio y contar con una cuenta activa de AWS con un dominio y perfil de usuario configurados. La interfaz de red de SageMaker Studio permite la comunicación con internet mediante una virtual private cloud (VPC) gestionada por Amazon SageMaker AI. Es esencial que la conexión a internet esté habilitada para poder descargar los paquetes necesarios.
Al implementar y usar el nuevo entorno de Scala en SageMaker Studio, es importante seguir buenas prácticas de limpieza para mantener la eficiencia y organización del entorno. Después de finalizar el trabajo, se deben apagar los núcleos de SageMaker Studio y eliminar cualquier entorno Conda no deseado para liberar espacio y evitar costos innecesarios.
Siguiendo los pasos descritos, será posible aprovechar las poderosas capacidades de Spark y los flujos de trabajo de ingeniería y análisis de datos basados en Scala, permitiendo a los científicos de datos y a los ingenieros beneficiarse de la sintaxis concisa y los constructos de programación funcional que Scala ofrece.
vía: AWS machine learning blog