Este documento presenta una introducción a Spark, incluyendo conceptos clave como RDD, DataFrame y DStream. Explica cómo Spark puede desplegarse localmente, en modo standalone o usando YARN/Mesos, y describe operaciones fundamentales como transformaciones (map, filter), acciones (count) y métodos de agregación (groupByKey, combineByKey).
Introducción a Apache Spark a través de un caso de uso cotidianoSocialmetrix
El documento describe cómo una compañía usa Apache Spark para procesar grandes volúmenes de datos de Twitter de manera escalable y distribuida. Explica la evolución de su solución desde Hadoop MapReduce y Hive a Spark, destacando las ventajas de Spark como su programación en lenguajes conocidos, facilidad de testing y mantenimiento del código. Luego detalla cómo resuelven el problema de contar las menciones de cuentas junto con hashtags usando Spark.
Spark es un framework para computación distribuida que introduce el concepto de Resilient Distributed Datasets (RDDs). Los RDDs permiten compartir datos entre operaciones de forma eficiente mediante transformaciones deterministas sobre datos almacenados de forma estable o sobre otros RDDs. Spark evalúa los RDDs de forma perezosa y proporciona mecanismos para recuperar los datos mediante el linaje de las transformaciones aplicadas en caso de fallos. Las evaluaciones muestran mejoras de velocidad de hasta 20 veces frente a Hadoop en aplicaciones iterativas de machine learning.
Este documento presenta una introducción a Scala y Apache Spark. Incluye información sobre la instalación de Scala y Apache Spark, una introducción al lenguaje Scala cubriendo cadenas, números, clases implícitas y más, y finalmente una introducción a Apache Spark con un ejemplo en Scala.
Realizar análisis de datos cuando se tienen que cruzar grandes cantidades de información, procesarla y limpiarla es un reto difícil y dispendioso. Apache Spark es un framework para procesar grandes cantidades de información.
Tutorial en Apache Spark - Clasificando tweets en realtimeSocialmetrix
Apache Spark [1] es un nuevo framework de procesamiento distribuido para big data, escrito en Scala con wrappers para Python, que viene generando mucha atención de la comunidad por su potencia, simplicidad de uso y velocidad de procesamiento. Ya siendo llamado como el remplazo de Apache Hadoop.
Socialmetrix desarrolla soluciones en este framework para generar reportes y dashboards de información a partir de los datos extraídos de redes sociales.
Los participantes de este tutorial van aprender a levantar información de Twitter usando Spark Streaming, Desarrollar algoritmos para calcular hashtags más frecuentes, usuarios más activos en batch processing aplicarlos en realtime a los nuevos tweets que lleguen a través del stream.
Procesamiento de datos a gran escala con Apache SparkSoftware Guru
Apache Spark es un framework para procesamiento de datos en paralelo que permite el procesamiento de los mismos en la memoria. Es hasta 100x más rápido que Apache Hadoop. Hoy en día las aplicaciones estarán pensadas para DataWorkflows y Spark te permite esta interacción con esos datos ya sea en Scala o Python. Adicionalmente puedes aplicar una seríe de Transformaciones a esos datos y aplicar procesamiento en Grafos (GraphX) Machine Learning (MLLib)
Introducción a Apache Spark a través de un caso de uso cotidianoSocialmetrix
El documento describe cómo una compañía usa Apache Spark para procesar grandes volúmenes de datos de Twitter de manera escalable y distribuida. Explica la evolución de su solución desde Hadoop MapReduce y Hive a Spark, destacando las ventajas de Spark como su programación en lenguajes conocidos, facilidad de testing y mantenimiento del código. Luego detalla cómo resuelven el problema de contar las menciones de cuentas junto con hashtags usando Spark.
Spark es un framework para computación distribuida que introduce el concepto de Resilient Distributed Datasets (RDDs). Los RDDs permiten compartir datos entre operaciones de forma eficiente mediante transformaciones deterministas sobre datos almacenados de forma estable o sobre otros RDDs. Spark evalúa los RDDs de forma perezosa y proporciona mecanismos para recuperar los datos mediante el linaje de las transformaciones aplicadas en caso de fallos. Las evaluaciones muestran mejoras de velocidad de hasta 20 veces frente a Hadoop en aplicaciones iterativas de machine learning.
Este documento presenta una introducción a Scala y Apache Spark. Incluye información sobre la instalación de Scala y Apache Spark, una introducción al lenguaje Scala cubriendo cadenas, números, clases implícitas y más, y finalmente una introducción a Apache Spark con un ejemplo en Scala.
Realizar análisis de datos cuando se tienen que cruzar grandes cantidades de información, procesarla y limpiarla es un reto difícil y dispendioso. Apache Spark es un framework para procesar grandes cantidades de información.
Tutorial en Apache Spark - Clasificando tweets en realtimeSocialmetrix
Apache Spark [1] es un nuevo framework de procesamiento distribuido para big data, escrito en Scala con wrappers para Python, que viene generando mucha atención de la comunidad por su potencia, simplicidad de uso y velocidad de procesamiento. Ya siendo llamado como el remplazo de Apache Hadoop.
Socialmetrix desarrolla soluciones en este framework para generar reportes y dashboards de información a partir de los datos extraídos de redes sociales.
Los participantes de este tutorial van aprender a levantar información de Twitter usando Spark Streaming, Desarrollar algoritmos para calcular hashtags más frecuentes, usuarios más activos en batch processing aplicarlos en realtime a los nuevos tweets que lleguen a través del stream.
Procesamiento de datos a gran escala con Apache SparkSoftware Guru
Apache Spark es un framework para procesamiento de datos en paralelo que permite el procesamiento de los mismos en la memoria. Es hasta 100x más rápido que Apache Hadoop. Hoy en día las aplicaciones estarán pensadas para DataWorkflows y Spark te permite esta interacción con esos datos ya sea en Scala o Python. Adicionalmente puedes aplicar una seríe de Transformaciones a esos datos y aplicar procesamiento en Grafos (GraphX) Machine Learning (MLLib)
Apache Spark es un motor de procesamiento de datos de código abierto y de alta velocidad. Proporciona procesamiento in-memory de datos a través de RDD (Resilient Distributed Datasets) que permiten operaciones paralelas tolerantes a fallas. Spark también ofrece un entorno de desarrollo interactivo y una API unificada para procesamiento por lotes e incremental sobre Hadoop u otros sistemas de almacenamiento distribuido.
En esta charla miraremos al futuro introduciendo Spark como alternativa al clásico motor de Hadoop MapReduce. Describiremos las diferencias más importantes frente al mismo, se detallarán los componentes principales que componen el ecosistema Spark, e introduciremos conceptos básicos que permitan empezar con el desarrollo de aplicaciones básicas sobre el mismo.
¿Por que cambiar de Apache Hadoop a Apache Spark?Socialmetrix
Este documento compara Hadoop y Spark, argumentando que Spark es una mejor opción debido a su capacidad de procesamiento de datos in-memory, su interfaz más expresiva y su naturaleza de plataforma unificada que permite procesamiento por lotes y en tiempo real con un solo código. El documento también discute algunos desafíos de Spark como trabajos largos y problemas de serialización.
Este documento habla sobre Spark, un framework para procesar grandes cantidades de datos. Spark permite procesar datos en tiempo real de manera más rápida que Hadoop. Se recomienda usar Spark para explorar grandes conjuntos de datos, crear modelos y sistemas de producción que procesen grandes cantidades de eventos en tiempo real. Empresas como Netflix y IBM usan Spark para procesar billones de eventos diarios.
Este documento presenta una introducción a los conceptos y aplicaciones de Big Data utilizando Twitter como fuente de datos. Explica cómo recolectar y almacenar datos de Twitter usando Elasticsearch e Hadoop/Spark, y cómo analizar los datos recolectados para identificar tendencias temporales, hashtags populares, y patrones de actividad de usuarios. También muestra ejemplos de correlacionar datos de Twitter con otros conjuntos de datos como la red nacional de caminos.
Meetup Spark y la Combinación de sus Distintos MódulosJorge Lopez-Malla
El documento presenta una introducción a Spark y sus distintos módulos. Explica brevemente Spark Core, que incluye RDD, transformaciones y acciones; Spark SQL, que permite consultas SQL sobre RDD; y cómo se relacionan estos módulos. También menciona Spark Streaming y MLlib, pero se enfoca principalmente en describir Spark Core y SQL, y cómo pueden combinarse mediante la creación de DataFrames a partir de RDD o realizando operaciones de join.
Talk about add proxy user in Spark Task execution time given in Spark Summit East 2017 by Jorge López-Malla and Abel Ricon
full video:
https://www.youtube.com/watch?v=VaU1xC0Rixo&feature=youtu.be
7 Disparadores de Engagement para o mercado de consumo massivoSocialmetrix
Conteúdo da Palestra do nosso gerente de Marketing no Social Media Week de São Paulo.
A comunicação de forma geral mudou, e os novos consumidores estão gerando nas marcas uma necessidade diferente de se comunicar e manter a audiência ativa e participativa. Aos poucos vamos entendendo que o Engagement não é algo transacional, mas emocional.
Abordaremos 7 disparadores chave para a construção de um engagement saudável, aplicados principalmente às marcas de consumo masivo, mas que podem ser úteis para quase todos os mercados.
Introducción al Business Intelligence y al Big DataDavid Hurtado
La fusión entre el marketing y la tecnología ha conseguido desarrollar técnicas de análisis predictivo como el modelo empresarial para implantación a escala global en un futuro inmediato.
Presentación en castellano escrita por Alex Rayón, revisada y extendida por Diego López de Ipiña, cuyo objetivo es indicar el potencial del paradigma cloud computing para el mundo empresarial y los profesionales en Economía y Gestión empresarial
Primeros pasos con Apache Spark - Madrid Meetupdhiguero
Primeros pasos con Spark dentro del Apache Spark Meetup group de Madrid (http://www.meetup.com/Madrid-Apache-Spark-meetup/events/198362002/)
Contenido:
- Introdución
- Conceptos básicos
- Ecosistema Spark
- Instalación del entorno
- Errores comunes
Presentación usada por Jorge Monge, de Management Solutions, en la Jornada "Aplicación del Big Data en sectores económicos estratégicos" celebrada el 27 de octubre de 2015. Más información: http://bit.ly/1MkKmnF
Patterns for slick database applicationsSkills Matter
Slick is Typesafe's open source database access library for Scala. It features a collection-style API, compact syntax, type-safe, compositional queries and explicit execution control. Community feedback helped us to identify common problems developers are facing when writing Slick applications. This talk suggests particular solutions to these problems. We will be looking at reducing boiler-plate, re-using code between queries, efficiently modeling object references and more.
Este documento presenta una guía práctica de gestión de riesgos desarrollada por el Instituto Nacional de Tecnologías de la Comunicación. La guía introduce conceptos clave como riesgo, amenaza e impacto, y describe las actividades de gestión de riesgos como desarrollar un plan de gestión, identificar, analizar, planificar respuestas e implementar controles. Además, define los roles y responsabilidades clave en el proceso como el jefe de proyecto, el equipo, y los involucrados en el negocio.
24 HOP edición Español - Machine learning - Cesar OviedoSpanishPASSVC
Microsoft ha lanzado una de las herramientas que tendrán más imparto para el Business Analytics y/o Data Mining. De momento ha pasado desapercibida por muchos a pesar de su gran potencial. En esta charla veremos que es Machine Learning y sus usos.
Este documento presenta una introducción a Big Data, incluyendo definiciones de Big Data, historia y tecnologías clave como Hadoop. Explica roles como científico de datos y oportunidades financieras en el campo. También describe ejemplos prácticos de análisis de Big Data como el monitoreo del sentimiento público en México usando Twitter y la combinación de datos geoespaciales y de redes sociales.
Introduction: Technological and methodical pillars for Smarter Environment Enablement
Part I: Smarter Environments Theoretical Grounding
What is a Smart Environment?
Technological enablers: IoT, Web of Data and Persuasive Technologies
Technology mediated Human Collaboration: need for co-creation
Killer application domains: Open Government & Age-friendly cities
Part II: Review of core enablers for Smarter Environments
Co-creation methodologies: Service Design and Design for Thinking
Internet of Things and Web of Things
Web of Data: Linked Data, Crowdsourcing & Big Data
Persuasive technologies and Behaviour Change
Part III: Implications for CyberParks
European projects on enabling Smarter Environments: WeLive, City4Age, GreenSoul
Reflections on the need for collaboration among stakeholders mediated with technology to realize CyberParks
Conclusions and practical implications
Este documento presenta una introducción a Cloud Computing y Amazon Web Services (AWS). Explica los conceptos clave de Cloud Computing como Software as a Service (SaaS), Platform as a Service (PaaS) e Infrastructure as a Service (IaaS). Luego describe los servicios principales de AWS como Amazon Elastic Compute Cloud (EC2) para computación en la nube, Amazon Simple Storage Service (S3) para almacenamiento, y Amazon SimpleDB y Amazon Relational Database Service (RDS) para bases de datos. Finalmente, propone desarrollar una aplicación de ejemplo utilizando estos servicios de AWS.
Infraestructura Virtualizada:Cloud Computing
Cloud Computing es …
Evolución hacia Cloud Computing
Características de Cloud Computing
Clasificación de Cloud Computing
Fisonomía de Cloud Computing
Nivel de transferencia de responsabilidad
Arquitectura Cloud Computing
Ventajas y Retos de Cloud Computing
Proveedores Mayores
Previsión de Mercado y Proveedores Actuales
Amazon Web Services (AWS)
Microsoft Azure
Google Cloud Platform
Internet de las Cosas: IoT
¿Qué es Big Data?
Spark es un framework para computación distribuida que introduce el concepto de Resilient Distributed Datasets (RDDs). Los RDDs permiten compartir datos entre operaciones de forma eficiente mediante transformaciones deterministas sobre datos almacenados de forma estable o sobre otros RDDs. Spark evalúa los RDDs de forma perezosa y proporciona mecanismos para recuperar los datos mediante el linaje de las transformaciones aplicadas cuando hay fallos. Las evaluaciones muestran mejoras de velocidad de hasta 20 veces frente a Hadoop en aplicaciones iterativas de machine learning.
Este documento compara Apache Hadoop y Apache Spark, dos frameworks para procesar grandes cantidades de datos. Explica que mientras Hadoop usa MapReduce para procesar datos de forma paralela en discos, Spark es más rápido porque procesa datos en memoria usando estructuras de datos resilientes distribuidas (RDD). Aunque Hadoop es más estable, Spark es más veloz y flexible gracias a su uso de grafos acíclicos dirigidos (DAG) y RDD. El documento concluye que ambos frameworks se complementan y lo ideal es implementar soluciones con ambos.
Apache Spark es un motor de procesamiento de datos de código abierto y de alta velocidad. Proporciona procesamiento in-memory de datos a través de RDD (Resilient Distributed Datasets) que permiten operaciones paralelas tolerantes a fallas. Spark también ofrece un entorno de desarrollo interactivo y una API unificada para procesamiento por lotes e incremental sobre Hadoop u otros sistemas de almacenamiento distribuido.
En esta charla miraremos al futuro introduciendo Spark como alternativa al clásico motor de Hadoop MapReduce. Describiremos las diferencias más importantes frente al mismo, se detallarán los componentes principales que componen el ecosistema Spark, e introduciremos conceptos básicos que permitan empezar con el desarrollo de aplicaciones básicas sobre el mismo.
¿Por que cambiar de Apache Hadoop a Apache Spark?Socialmetrix
Este documento compara Hadoop y Spark, argumentando que Spark es una mejor opción debido a su capacidad de procesamiento de datos in-memory, su interfaz más expresiva y su naturaleza de plataforma unificada que permite procesamiento por lotes y en tiempo real con un solo código. El documento también discute algunos desafíos de Spark como trabajos largos y problemas de serialización.
Este documento habla sobre Spark, un framework para procesar grandes cantidades de datos. Spark permite procesar datos en tiempo real de manera más rápida que Hadoop. Se recomienda usar Spark para explorar grandes conjuntos de datos, crear modelos y sistemas de producción que procesen grandes cantidades de eventos en tiempo real. Empresas como Netflix y IBM usan Spark para procesar billones de eventos diarios.
Este documento presenta una introducción a los conceptos y aplicaciones de Big Data utilizando Twitter como fuente de datos. Explica cómo recolectar y almacenar datos de Twitter usando Elasticsearch e Hadoop/Spark, y cómo analizar los datos recolectados para identificar tendencias temporales, hashtags populares, y patrones de actividad de usuarios. También muestra ejemplos de correlacionar datos de Twitter con otros conjuntos de datos como la red nacional de caminos.
Meetup Spark y la Combinación de sus Distintos MódulosJorge Lopez-Malla
El documento presenta una introducción a Spark y sus distintos módulos. Explica brevemente Spark Core, que incluye RDD, transformaciones y acciones; Spark SQL, que permite consultas SQL sobre RDD; y cómo se relacionan estos módulos. También menciona Spark Streaming y MLlib, pero se enfoca principalmente en describir Spark Core y SQL, y cómo pueden combinarse mediante la creación de DataFrames a partir de RDD o realizando operaciones de join.
Talk about add proxy user in Spark Task execution time given in Spark Summit East 2017 by Jorge López-Malla and Abel Ricon
full video:
https://www.youtube.com/watch?v=VaU1xC0Rixo&feature=youtu.be
7 Disparadores de Engagement para o mercado de consumo massivoSocialmetrix
Conteúdo da Palestra do nosso gerente de Marketing no Social Media Week de São Paulo.
A comunicação de forma geral mudou, e os novos consumidores estão gerando nas marcas uma necessidade diferente de se comunicar e manter a audiência ativa e participativa. Aos poucos vamos entendendo que o Engagement não é algo transacional, mas emocional.
Abordaremos 7 disparadores chave para a construção de um engagement saudável, aplicados principalmente às marcas de consumo masivo, mas que podem ser úteis para quase todos os mercados.
Introducción al Business Intelligence y al Big DataDavid Hurtado
La fusión entre el marketing y la tecnología ha conseguido desarrollar técnicas de análisis predictivo como el modelo empresarial para implantación a escala global en un futuro inmediato.
Presentación en castellano escrita por Alex Rayón, revisada y extendida por Diego López de Ipiña, cuyo objetivo es indicar el potencial del paradigma cloud computing para el mundo empresarial y los profesionales en Economía y Gestión empresarial
Primeros pasos con Apache Spark - Madrid Meetupdhiguero
Primeros pasos con Spark dentro del Apache Spark Meetup group de Madrid (http://www.meetup.com/Madrid-Apache-Spark-meetup/events/198362002/)
Contenido:
- Introdución
- Conceptos básicos
- Ecosistema Spark
- Instalación del entorno
- Errores comunes
Presentación usada por Jorge Monge, de Management Solutions, en la Jornada "Aplicación del Big Data en sectores económicos estratégicos" celebrada el 27 de octubre de 2015. Más información: http://bit.ly/1MkKmnF
Patterns for slick database applicationsSkills Matter
Slick is Typesafe's open source database access library for Scala. It features a collection-style API, compact syntax, type-safe, compositional queries and explicit execution control. Community feedback helped us to identify common problems developers are facing when writing Slick applications. This talk suggests particular solutions to these problems. We will be looking at reducing boiler-plate, re-using code between queries, efficiently modeling object references and more.
Este documento presenta una guía práctica de gestión de riesgos desarrollada por el Instituto Nacional de Tecnologías de la Comunicación. La guía introduce conceptos clave como riesgo, amenaza e impacto, y describe las actividades de gestión de riesgos como desarrollar un plan de gestión, identificar, analizar, planificar respuestas e implementar controles. Además, define los roles y responsabilidades clave en el proceso como el jefe de proyecto, el equipo, y los involucrados en el negocio.
24 HOP edición Español - Machine learning - Cesar OviedoSpanishPASSVC
Microsoft ha lanzado una de las herramientas que tendrán más imparto para el Business Analytics y/o Data Mining. De momento ha pasado desapercibida por muchos a pesar de su gran potencial. En esta charla veremos que es Machine Learning y sus usos.
Este documento presenta una introducción a Big Data, incluyendo definiciones de Big Data, historia y tecnologías clave como Hadoop. Explica roles como científico de datos y oportunidades financieras en el campo. También describe ejemplos prácticos de análisis de Big Data como el monitoreo del sentimiento público en México usando Twitter y la combinación de datos geoespaciales y de redes sociales.
Introduction: Technological and methodical pillars for Smarter Environment Enablement
Part I: Smarter Environments Theoretical Grounding
What is a Smart Environment?
Technological enablers: IoT, Web of Data and Persuasive Technologies
Technology mediated Human Collaboration: need for co-creation
Killer application domains: Open Government & Age-friendly cities
Part II: Review of core enablers for Smarter Environments
Co-creation methodologies: Service Design and Design for Thinking
Internet of Things and Web of Things
Web of Data: Linked Data, Crowdsourcing & Big Data
Persuasive technologies and Behaviour Change
Part III: Implications for CyberParks
European projects on enabling Smarter Environments: WeLive, City4Age, GreenSoul
Reflections on the need for collaboration among stakeholders mediated with technology to realize CyberParks
Conclusions and practical implications
Este documento presenta una introducción a Cloud Computing y Amazon Web Services (AWS). Explica los conceptos clave de Cloud Computing como Software as a Service (SaaS), Platform as a Service (PaaS) e Infrastructure as a Service (IaaS). Luego describe los servicios principales de AWS como Amazon Elastic Compute Cloud (EC2) para computación en la nube, Amazon Simple Storage Service (S3) para almacenamiento, y Amazon SimpleDB y Amazon Relational Database Service (RDS) para bases de datos. Finalmente, propone desarrollar una aplicación de ejemplo utilizando estos servicios de AWS.
Infraestructura Virtualizada:Cloud Computing
Cloud Computing es …
Evolución hacia Cloud Computing
Características de Cloud Computing
Clasificación de Cloud Computing
Fisonomía de Cloud Computing
Nivel de transferencia de responsabilidad
Arquitectura Cloud Computing
Ventajas y Retos de Cloud Computing
Proveedores Mayores
Previsión de Mercado y Proveedores Actuales
Amazon Web Services (AWS)
Microsoft Azure
Google Cloud Platform
Internet de las Cosas: IoT
¿Qué es Big Data?
Spark es un framework para computación distribuida que introduce el concepto de Resilient Distributed Datasets (RDDs). Los RDDs permiten compartir datos entre operaciones de forma eficiente mediante transformaciones deterministas sobre datos almacenados de forma estable o sobre otros RDDs. Spark evalúa los RDDs de forma perezosa y proporciona mecanismos para recuperar los datos mediante el linaje de las transformaciones aplicadas cuando hay fallos. Las evaluaciones muestran mejoras de velocidad de hasta 20 veces frente a Hadoop en aplicaciones iterativas de machine learning.
Este documento compara Apache Hadoop y Apache Spark, dos frameworks para procesar grandes cantidades de datos. Explica que mientras Hadoop usa MapReduce para procesar datos de forma paralela en discos, Spark es más rápido porque procesa datos en memoria usando estructuras de datos resilientes distribuidas (RDD). Aunque Hadoop es más estable, Spark es más veloz y flexible gracias a su uso de grafos acíclicos dirigidos (DAG) y RDD. El documento concluye que ambos frameworks se complementan y lo ideal es implementar soluciones con ambos.
Este documento compara Apache Hadoop y Apache Spark, dos frameworks para procesar grandes cantidades de datos. Explica que Spark es más rápido que Hadoop debido a que usa memoria en lugar de disco, pero depende de Hadoop para almacenamiento. También describe las características clave de cada uno como RDDs, DAG y MapReduce. La conclusión es que ambos son complementarios y lo mejor es implementarlos juntos.
Este documento proporciona información sobre herramientas de Big Data como Apache Hadoop, MapReduce y HDF. También describe Apache Spark, un motor rápido para procesar datos a gran escala. Explica conceptos clave de Spark como RDD, programación funcional en Scala y ejemplos de capacidades como procesar flujos de datos en tiempo real de servidores web o sensores IoT.
Primeros pasos con Spark - Spark Meetup Madrid 30-09-2014Stratio
Este documento presenta una introducción a Apache Spark. Explica conceptos clave como RDD, SparkContext y el ecosistema de Spark, incluyendo Spark Core, Spark Streaming, MLlib, SparkSQL y GraphX. También identifica errores comunes como configurar incorrectamente el URL del master o no distribuir los JAR entre los nodos del cluster. El objetivo es proporcionar una visión general de Spark para desarrolladores.
Este documento presenta a dos expertos en Big Data y Spark con Scala, José Carlos García Serrano y David Vallejo Navarro. Brinda información sobre sus experiencias laborales y educacionales trabajando con tecnologías como Scala, Spark, Akka, MongoDB y Cassandra. También incluye un índice de los temas a tratar en la presentación.
Este documento presenta a dos personas, José Carlos García Serrano y David Vallejo Navarro, que trabajan con la tecnología Fun[ctional] Spark with Scala. Brevemente describe sus antecedentes profesionales y áreas de interés. Además, introduce los temas que se abordarán en la presentación como las ventajas de Scala en Spark, desventajas de Scala en Spark y Scala avanzado con Spark.
Este documento presenta cómo optimizar y monitorear trabajos de Spark con la Spark Web. Explica la terminología básica de Spark como aplicaciones, trabajos, etapas y tareas. Luego describe cómo la Spark Web proporciona información sobre aplicaciones, trabajos, etapas, caché y contadores que ayuda a optimizar el DAG. También cubre cómo la Spark Web monitorea trabajos de Spark SQL y Spark Streaming.
Meetup: Cómo monitorizar y optimizar procesos de Spark usando la Spark Web - ...Stratio
Apache Spark ya es una realidad en el mundo de la informática y ahora necesitamos no sólo saber de lo que la tecnología es capaz, necesitamos hacerlo productivo. Para ello necesitamos saber cómo poder auditar cada uno de sus procesos de una manera sencilla y sin necesidad de conocimientos destacados de esta tecnología.
Jorge López-Malla muestra qué herramientas proporciona el propio framework de Apache Spark para poder monitorizar el rendimiento de los algoritmos y cómo sacarle partido para mejorar los jobs de Apache Spark, tanto streaming como batch, y ver qué magia hace SparkSQL cuando se quiere hacer un simple join.
La computación distribuída es un nuevo modelo de computación que surgió con el objetivo de resolver problemas de computación masiva donde diferentes máquinas trabajan en paralelo formando un clúster de computación.
En los últimos años han surgido diferentes frameworks como Apache Hadoop, Apache Spark y Apache Flink que permiten resolver este tipo de problemas donde tenemos datos masivos desde diferentes fuentes de datos.
Dentro del ecosistema de Python podemos destacar las librerías de Pyspark y Dask de código abierto que permiten la ejecución de tareas de forma paralela y distribuida en Python.
Entre los puntos a tratar podemos destacar:
Introducción a la computación distribuida
Comparando tecnologías de computación distribuida
Frameworks y módulos en Python para computación distribuida
Casos de uso en proyectos Big Data
Este documento presenta varias herramientas para la visualización de datos. En primer lugar, describe cinco herramientas populares: Google Fusion Tables, CartoDB, Tableau Public, iCharts y Smart Data Report. Luego, proporciona más detalles sobre cada una de estas herramientas, incluidas sus características y usos comunes. El objetivo general es ayudar a los lectores a sacar el máximo provecho de sus datos mediante la visualización eficaz de la información.
Este documento introduce Apache Spark, un sistema de computación de clústeres rápido y expresivo. Spark es más rápido que Hadoop, ya que almacena datos en memoria para consultas iterativas. Spark es compatible con Hadoop y puede leer y escribir datos en cualquier sistema soportado por Hadoop como HDFS. Spark usa Resilient Distributed Datasets (RDD) que permiten transformaciones paralelas sobre colecciones distribuidas de datos.
MapReduce es un modelo de programación paralela creado por Google en 2004 que permite procesar grandes conjuntos de datos distribuidos en clusters o grids. Se basa en el paradigma de dividir y conquistar, dividiendo los datos en tareas más pequeñas que son procesadas en paralelo. Hadoop es una implementación de código abierto de MapReduce y su sistema de archivos distribuido HDFS que es usado por compañías como Yahoo, Facebook y Amazon.
Este documento presenta una introducción al paralelismo en programación para grandes datos. Explica conceptos como programación paralela, aprendizaje automático distribuido y mapeo de datos. Luego proporciona ejemplos prácticos utilizando Python para implementar la transformada discreta de Fourier de forma paralela en Spark, Dask y scikit-learn. Finalmente, compara los tiempos de ejecución de estos diferentes enfoques.
Este documento presenta una introducción a Hadoop, incluyendo qué es MapReduce, HDFS, y Hadoop. Explica que Hadoop es un framework para almacenar y procesar grandes volúmenes de datos usando hardware de bajo costo. Describe la arquitectura de Hadoop, incluyendo el jobtracker, tasktracker y HDFS. También presenta un ejemplo de cómo construir un cluster Hadoop y ejecutar un trabajo.
Este documento proporciona una introducción general a Hadoop y su ecosistema. Explica brevemente el contexto histórico de Big Data y Hadoop, define los componentes clave de Hadoop como HDFS y MapReduce, y describe varias aplicaciones populares como Hive, Pig y Spark. También cubre conceptos como EMR de AWS y casos de uso comercial exitosos de Hadoop en análisis de riesgos, retención de clientes y puntos de venta.
Introducción (en Español) al framework de procesamiento distribuido en memoria Apache Spark. Elementos básicos de Spark, RDD, incluye demo de las librerías SparkSQL y Spark Streaming
Presentado en www.nardoz.com
Este documento describe varias plataformas para sistemas de Big Data, incluyendo Hadoop, que es de código abierto y se utiliza para procesamiento por lotes a gran escala. También describe Spark, que es más rápido que Hadoop debido a su capacidad de procesamiento en memoria y representa flujos de datos como secuencias de RDD. El documento también discute los retos de los sistemas de Big Data como la falta de programadores especializados y la seguridad y gobernanza de los datos.
Este documento compara y resume las características de Spark, Storm, Kafka, Pig y Hive. Spark es una plataforma para procesamiento paralelo de grandes conjuntos de datos distribuidos. Storm es un sistema de procesamiento de datos en tiempo real. Kafka es un sistema de mensajería para procesamiento de datos en tiempo real. Pig y Hive son lenguajes de consultas para analizar grandes volúmenes de datos almacenados en Hadoop.
LINEA DE TIEMPO Y PERIODO INTERTESTAMENTARIOAaronPleitez
linea de tiempo del antiguo testamento donde se detalla la cronología de todos los eventos, personas, sucesos, etc. Además se incluye una parte del periodo intertestamentario en orden cronológico donde se detalla todo lo que sucede en los 400 años del periodo del silencio. Basicamente es un resumen de todos los sucesos desde Abraham hasta Cristo
Minería de Datos e IA Conceptos, Fundamentos y Aplicaciones.pdfMedTechBiz
Este libro ofrece una introducción completa y accesible a los campos de la minería de datos y la inteligencia artificial. Cubre todo, desde conceptos básicos hasta estudios de casos avanzados, con énfasis en la aplicación práctica utilizando herramientas como Python y R.
También aborda cuestiones críticas de ética y responsabilidad en el uso de estas tecnologías, discutiendo temas como la privacidad, el sesgo algorítmico y transparencia.
El objetivo es permitir al lector aplicar técnicas de minería de datos e inteligencia artificial a problemas reales, contribuyendo a la innovación y el progreso en su área de especialización.
Este documento ha sido elaborado por el Observatorio Ciudadano de Seguridad Justicia y Legalidad de Irapuato siendo nuestro propósito conocer datos sociodemográficos en conjunto con información de incidencia delictiva de las 10 colonias y/o comunidades que del año 2020 a la fecha han tenido mayor incidencia.
Existen muchas más colonias que presentan cifras y datos en materia de seguridad, sin embargo, en este primer acercamiento lo que se prevées darle al lector una idea de como se encuentran las colonias analizadas, tomando como referencia los datos del INEGI 2020, datos del Secretariado Ejecutivo del Sistema Nacional de Seguridad Pública del 2020 al 2023 y las bases de datos propias que desde el 2017 el Observatorio Ciudadano ha recopilado de manera puntual con datos de las vıć timas de homicidio doloso, accidentes de tránsito, personas lesionadas por arma de fuego, entre otros indicadores.
2. Jorge López-Malla Matute
jlopezm@stratio.com
CONTACTO Gaspar Muñoz
gmunoz@stratio.com
Introducción
● Introducción al Big Data
● Hadoop
● ¿Por qué Spark?
1
4
Conceptos de Spark
● RDD - Dataframe - DStream
● Componentes de un clúster
● Despliegue de Spark
2
5
3
6Spark SQL
● Introducción
● Dataframe API
● Datasources
● Ejemplos prácticos y Ejercicios
Spark core
● Transformaciones
● Acciones
● Variables compartidas
● Ejemplos prácticos y Ejercicios
Spark Streaming
● Receivers
● Operaciones con DStreams
● Operaciones con ventanas
● Operaciones “Stateful”
MlLib
● Introducción
● Algoritmos
● Ejemplos prácticos
3. Quienes somos
Tras trabajar con algunas
metodologías tradicionales
empecé a centrarme en el
mundo del Big Data, del cual
me enamoré. Ahora soy
arquitecto Big Data en Stratio y
he puesto proyectos en
producción en distintas partes
del mundo.
4. Quienes somos
Arquitecto Big Data y
desarrollador en Stratio desde
su creación. He trabajado en
multitud de exitosos proyectos
con Hadoop, Spark y todo su
ecosistema.
8. Introducción al Modelo de Map & Reduce
Map&Reduce es un modelo de programación utilizado por Google para dar soporte a la computación
paralela sobre grandes colecciones de datos en grupos de computadoras y al commodity computing. El
nombre del framework está inspirado en los nombres de dos importantes métodos, macros o funciones
en programación funcional: Map y Reduce. MapReduce ha sido adoptado mundialmente, ya que existe
una implementación OpenSource denominada Hadoop. Su desarrollo fue liderado inicialmente por
Yahoo y actualmente lo realiza el proyecto Apache. En esta década de los años 2010 existen diversas
iniciativas similares a Hadoop tanto en la industria como en el ámbito académico, entre ellas está Spark.
9. Introducción al Modelo de Map & Reduce
Map(k1,v1) -> list(k2,v2) Reduce(k2,list(v2)) -> (k3,v3)
10. Introducción al Modelo de Map & Reduce
Fases opcionales del modelo
Aunque el modelo Map & Reduce puede realizarse únicamente con las fases de Map y de Reduce existen una serie de fases
opcionales que nos ayudan a mejorar y optimizar nuestros procesos. Estas fases son:
● Combiner (Fase de Combinación)
● Partitioner (Fase de Particionado)
Map Combiner Partitioner Reduce
11. Introducción al Modelo de Map & Reduce
Apache Hadoop es un framework de procesamiento y almacenamiento distribuido que facilita la
programación de tareas mediante el paradigma map & reduce y es escalable desde unos pocos hasta miles de
nodos. Es bastante robusto y está diseñado para trabajar en alta disponibilidad, con tolerancia a fallos y en su
versión reciente gestionar recursos de manera muy eficiente.
13. Introducción al Modelo de Map & Reduce
Apache Spark es una framework de procesamiento distribuido en memoria de segunda
generación que facilita la analítica de grandes conjuntos de datos integrando diferentes
paradigmas como Bases de Datos NoSQL, analítica en tiempo real, machine learning o análisis de
grafos mediante un único lenguaje común.
SPARK CORE
SQL RSTREAMING MlLib GraphX
17. Definición:
Un RDD en Spark es una colección de colecciones de objetos inmutable y distribuida. Cada RDD está dividido en diferentes particiones, que
pueden ser computadas en los distintos nodos del Cluster de Spark.
Es la Unidad mínima de computación en Spark
Ej:
El RDD numbers es un rdd de enteros que está distribuido por en un cluster con 3 Workers{W1, W2, W3}
numbers = RDD[1,2,3,4,5,6,7,8,9,10]
Conceptos de Spark
W1 W2 W2
[1,5,6,9] [2,7,8] [3,4,10]
18. Definición:
Un DStream representa una corriente de datos, un conjunto de datos que llegan de manera continua desde una fuente. En Spark este
concepto se implementa como “micro batchs” de RDDs.
Es la unidad mínima de procesamiento de Spark Streaming
Ej:
Conceptos de Spark
DStream
R
D
D
R
D
D
R
D
D
R
D
D
R
D
D
R
D
D
R
D
D
R
D
D
19. Definición:
Un DataFrame en Spark es una colección de colecciones de objetos inmutable y distribuida organizada en columnas con nombre.
Conceptualmente es igual que una tabla en una base de datos relacional. Estos datos pueden provenir de muchas fuentes de datos
estructurados como Json, CSV, tablas de Hive u otros RDD existentes
Es la Unidad mínima de computación en Spark SQL
Ej:
El RDD persons es un Dataframe que representa la tabla persona que tiene un campo nombre, texto, y otro campo edad, un entero.
Conceptos de Spark
W1 W2 W3
[Jorge, 31] [Gaspar, 28] [María 23]
persons= Dataframe[(Jorge, 31);
(Gaspar, 28);
(María, 23)]
Nombre -> String; Edad -> Int
20. Spark se puede desplegar de distintas maneras:
● Local: Levanta un cluster embebido de Spark.
○ Se hace creando un SparkContext con master = local[NumeroCores]
○ El SparkMaster se levanta en el propio proceso y no es accesible ni por via web
○ Los Workers, tantos como NúmeroCores, se levantan también en el propio proceso (página de stages accesible vía Web)
● Standalone:
○ El SparkMaster se lanza en una máquina del cluster. Web en el Master
○ Tendrá tantos Workers como máquinas se indiquen en el fichero slaves
○ Se despliega mediante el script start-all.sh de Spark.
Conceptos de Spark
21. Spark se puede desplegar de distintas maneras:
● YARN
○ Se usa el gestor de recursos de Hadoop YARN
○ Nuestra aplicación de Spark se lanza dentro de un contenedor de Yarn, que es el encargado de dar los recursos
○ Podemos tener varios SparkMaster corriendo a la vez en el cluster (ojo NO podrán compartir información)
● Mesos:
○ Mesos es otro gestor de recursos, Spark fue uno de sus Casos de uso
○ Como con YARN puede haber más de un SparkMaster (tampoco se podrá compartir su información)
○ Se usaba con frecuencia en el primeros momentos de spark, ahora se usa con menos frecuencia.
Conceptos de Spark
24. Los RDD tienen dos tipos de operaciones:
1. Transformaciones: Son aquellas operaciones que tras ejecutarlas nos devuelven otro RDD. Como un RDD no deja de ser una colección
distribuida estas operaciones son Lazy por lo que no se realizará ningún cálculo a no ser que al final del árbol de operaciones haya una
acción.
2. Acciones: Son operaciones que una vez realizadas sobre un RDD nos devuelven un objeto distinto a un RDD o vacío. Este tipo de
operaciones hace que se lance la ejecución del workflow y por consiguiente que se ejecute nuestra aplicación de Spark.
Spark Core
25. Spark Core
map
Devuelve el rdd resultante de aplicar una función a cada uno de los elementos del rdd que lo invoca:
map(f: (V) ⇒ U) : RDD[U]
map
scala> val rddUpper = rddCow.map(_.toUpperCase)
rddUpper: org.apache.spark.rdd.RDD[String] = MappedRDD[1] at map
rddCow rddUpper
I've never seen a purple cow
I never hope to see one
But i can tell you, anyhow,
I’d rather see than be one
I'VE NEVER SEEN A PURPLE COW
I NEVER HOPE TO SEE ONE
BUT I CAN TELL YOU, ANYHOW,
I’D RATHER SEE THAN BE ONE
26. Spark Core
flatMap scala> val rddCowWords = rddCow.flatMap(_.split(" "))
rddCowWords: org.apache.spark.rdd.RDD[String] = FlatMappedRDD[2] at flatMap
scala> rddCow.partitions.size == rddCowWords.partitions.size
res1: Boolean = true
scala> rddCow.count == rddCowWords.count
25/04/15 10:30:28 INFO SparkContext: Starting job: count
25/04/15 10:30:28 INFO DAGScheduler: Got job 2 (count) with 3 output partitions
(allowLocal=false)
…
25/04/15 10:30:20 INFO DAGScheduler: Job 3 finished: count, took 0,11456 s
res2: Boolean = false
flatMap
rddCowWords
I've never seen a purple cow
I never hope to see one
But i can tell you, anyhow,
I’ve
never
seen
a
purple
cow
I
never
hope
to
see
one
But
i
can
tell
you,
anyhow
rddCow
27. Spark Core
filter scala> val rddEven = rddNumber.filter(number => number%2 == 0)
rddEven : org.apache.spark.rdd.RDD[Int] = FlatMappedRDD[3] at filter
scala> rddNumber.partitions.size == rddEven.partitions.size
res3: Boolean = true
scala> rddNumber.count == rddEven.count
25/11/15 11:30:28 INFO SparkContext: Starting job: count
25/11/15 11:30:28 INFO DAGScheduler: Got job 2 (count) with 3 output partitions (allowLocal=false)
…
25/11/15 11:30:20 INFO DAGScheduler: Job 3 finished: count, took 0,11456 s
res4: Boolean = false
filter
rddEven
1
2
3
rddNumber
2
31. Acciones:
Las acciones son los métodos de Spark que hacen que se ejecute todo el workflow asociado a una acción. Hasta el
momento no se ha ejecutado ninguna operación ni se han movido los datos de los repositorios distribuidos.
Hay que tener cuidado con algunas de estas operaciones porque pueden dar como resultado el traer todos los datos de
un repositorio Big Data a una sola máquina.
A continuación enumeramos algunas de las usadas.
Spark Core
32. numVisits
count
Cuenta el número de registros de un RDD
countByKey: Map[K, Long]
Spark Core
(January, (3, 5, 7))
(March, (3))
(February, (5))
(June, (1, 2))
(March, (4, 4))
(January, (4, 4))
rddVisitsByMonth
count
scala> val numVisits = rddVisitsByMonth.count
numVisits: Int
6
33. visits
collect
Recolecta todos los datos de un RDD en forma de lista
countByKey: Map[K, Long]
Spark Core
(January, (3, 5, 7))
(March, (3))
(February, (5))
(June, (1, 2))
(March, (4, 4))
(January, (4, 4))
rddVisitsByMonth
collect
scala> val visits = rddVisitsByMonth.collect
numVisits: Array[(Int, List[Int]]
[(January, (3, 5, 7)),
(March, (3)),
(February, (5)),
(June, (1, 2))
(March, (4, 4))
(January, (4, 4))]
34. VisitsMap
countByKey
Devuelve los datos al Driver en forma de Map con un contador por clave
countByKey: Map[K, Long]
Spark Core
(January, (3, 5, 7))
(March, (3))
(February, (5))
(June, (1, 2))
(March, (4, 4))
(January, (4, 4))
rddVisitsByMonth
countByKey
scala> val visitsMap = rddVisitsByMonth.countByKey
visitsMap: scala.collection.Map[String,Long]
{(January, 2),
(March, 1),
(June, 1),
(February, 1)}
35. foreach
Recorre todo el RDD ejecutando una acción. Esta acción no debe devolver ningún valor.
Spark Core
(January, (3, 5, 7))
(March, (3))
(February, (5))
(June, (1, 2))
(March, (4, 4))
(January, (4, 4))
rddVisitsByMonth
scala> rddVisitsByMonth.foreach(tuple => println(tuple._2.reduce(_ + _)))
15
3
5
3
8
8
36. Variables compartidas:
Las variables compartidas son tipos de variables especiales que se pueden usar dentro de las tareas de Spark.
Aunque se crean en el Driver se actualizan y se les da uso en los Workers, dentro de cada tarea de Spark.
Se dividen en dos tipos:
● Contadores distribuidos: accumulator
● Variables distribuidas por el cluster: broadcast
Spark Core
42. Spark Sql
case class Movie(movieId : Integer, name : String, genre : String)
case class Tag(userId : Integer, movieId : Integer, tag : String, timestamp : Long)
case class Rating(userId : Integer, movieId : Integer, rating : Float, timestamp : Long)
/**
* Saca el nombre y género de la película con mejor media
*/
scala> val aux1 = ratingRdd.map(rating => (rating.movieId, rating.rating).combineByKey(
(rating: Int) => (rating, 1),
(comb: (Int, Int), rating) => (comb._1 + rating, comb._2 + 1),
(combAcc: (Int, Int), comb: (Int, Int)) => (combAcc._1 + comb._1, combAcc._2 +
comb._2)).map(idRatingSum => (idRatingSum._1, idRatingSum._2._1/ idRatingSum._2._2))
.filter(avgId => avgId._2 > 10)
scala> val aux2 = aux1.join(moviesRdd.map(movie => (movie.idMovie, (movie.name, movie.gender))))
scala> aux2.map(idAvgNameGender => (idAvgNameGender._2._1, idAvgNameGender._2._2))
.sortByKey(false).map(avgId => (avgId._2, avgId._1)).collect.head
43. Spark Sql
Proyecto: Flights
Dataset: Airlines
Objetivo: Rellenar los métodos de una DSL en Scala y que los tests pasen correctamente.
Repositorio: https://github.com/SparkCodemotion/Flights
46. Spark Sql
Spark SQL nace en la versión 1.0 y quiere aunar y mejorar diferentes iniciativas de “SQL-on-Hadoop” ya
existentes.
• Ejecuta consultas SQL / HiveQL sobre RDD’s o datasources.
• Conecta herramientas de BI a Spark mediante JDBC vía “thrift server”
• Manejo con Python, Scala, Java, R
47. Spark Sql
Un DataFrame es una colección de Rows que contiene un esquema específico indícando el nombre de
las columnas y el tipo de dato que contiene cada una de ellas.
Conceptualmente es equivalente a una tabla en una base de datos relacional pero con una capa de
optimización que transforma lógica SQL en un plan “físico” basado en RDD’s para ser ejecutados en
Spark.
48. Spark Sql
El trabajo con SQL puede hacerse de forma directa haciendo consultas en este lenguaje o haciendo uso
de una completa API que han desarrollado y que permite trabajar de forma programática con todas la
funcionalidad del lenguaje y añadiendo la propia, integrada totalmente con el core de Spark.
• Proyección y filtrado de columnas
• Joins entre datasources diferentes
• Funciones de agregación
• Soporte para UDF’s
• API extensible
51. Spark Sql
case class Movie(movieId : Integer, name : String, genre : String)
case class Tag(userId : Integer, movieId : Integer, tag : String, timestamp : Long)
case class Rating(userId : Integer, movieId : Integer, rating : Float, timestamp : Long)
import org.apache.spark.sql.functions._
import sqlContext.implicits._
val moviesDF = sc.textFile("/home/gmunoz/datasets/ml/movies.dat")
.map( line => line.split("::")).map(m => Movie(m(0).toInt,m(1),m(2))).toDF().cache()
val tagsDF = sc.textFile("/home/gmunoz/datasets/ml/tags.dat")
.map( line => line.split("::")).map(t =>
Tag(t(0).toInt,t(1).toInt,t(2),t(3).toLong)).toDF().cache()
val ratingsDF = sc.textFile("/home/gmunoz/datasets/ml/ratings.dat")
.map( line => line.split("::")).map(r =>
Rating(r(0).toInt,r(1).toInt,r(2).toFloat,r(3).toLong)).toDF().cache()
52. Spark Sql
case class Movie(movieId : Integer, name : String, genre : String)
case class Tag(userId : Integer, movieId : Integer, tag : String, timestamp : Long)
case class Rating(userId : Integer, movieId : Integer, rating : Float, timestamp : Long)
/**
*
*/
ratingsDF.select('movieId).groupBy('movieId).agg(count('movieId) as "count").sort('count.desc)
.join(moviesDF.select('name, 'movieId), moviesDF("movieId") === ratingsDF("movieId"),
joinType = "inner")
.select('name, 'count).show(1)
53. Spark Sql
case class Movie(movieId : Integer, name : String, genre : String)
case class Tag(userId : Integer, movieId : Integer, tag : String, timestamp : Long)
case class Rating(userId : Integer, movieId : Integer, rating : Float, timestamp : Long)
/**
* Saca el nombre de la película más votada
*/
ratingsDF.select('movieId).groupBy('movieId).agg(count('movieId) as "count").sort('count.desc)
.join(moviesDF.select('name, 'movieId), moviesDF("movieId") === ratingsDF("movieId"),
joinType = "inner")
.select('name, 'count).show(1)
54. Spark Sql
case class Movie(movieId : Integer, name : String, genre : String)
case class Tag(userId : Integer, movieId : Integer, tag : String, timestamp : Long)
case class Rating(userId : Integer, movieId : Integer, rating : Float, timestamp : Long)
/**
* Saca el nombre de la película más votada
*/
ratingsDF.select('movieId).groupBy('movieId).agg(count('movieId) as "count").sort('count.desc)
.join(moviesDF.select('name, 'movieId), moviesDF("movieId") === ratingsDF("movieId"),
joinType = "inner")
.select('name, 'count).show(1)
/**
*
*/
ratingsDF.select('movieId,'rating).groupBy('movieId).agg(avg('rating) as "avg", count('rating)
as "count")
.filter('count > 10)
.sort('avg.desc)
.join(moviesDF.select('name, 'movieId, 'genre), moviesDF("movieId") ===
ratingsDF("movieId"), joinType = "inner")
.select('name, 'genre, 'avg).show(2)
55. Spark Sql
case class Movie(movieId : Integer, name : String, genre : String)
case class Tag(userId : Integer, movieId : Integer, tag : String, timestamp : Long)
case class Rating(userId : Integer, movieId : Integer, rating : Float, timestamp : Long)
/**
* Saca el nombre de la película más votada
*/
ratingsDF.select('movieId).groupBy('movieId).agg(count('movieId) as "count").sort('count.desc)
.join(moviesDF.select('name, 'movieId), moviesDF("movieId") === ratingsDF("movieId"),
joinType = "inner")
.select('name, 'count).show(1)
/**
* Saca el nombre y género de la película con mejor media
*/
ratingsDF.select('movieId,'rating).groupBy('movieId).agg(avg('rating) as "avg", count('rating)
as "count")
.filter('count > 10)
.sort('avg.desc)
.join(moviesDF.select('name, 'movieId, 'genre), moviesDF("movieId") ===
ratingsDF("movieId"), joinType = "inner")
.select('name, 'genre, 'avg).show(2)
58. Spark Streaming
Un DStream representa una entrada de datos en tiempo real en un intervalo de tiempo determinado.
• La entrada de datos es dividida en micro batches.
• Cada micro-batch es un RDD
• El Dstream es una secuencia de RDD’s
61. Spark Streaming
La entrada de streams de datos se produce a través de los llamados InputDStream o Receiver
• Es común usar sistemas como Kafka, Kinesis o Apache Flume
• Existen también receivers básicos como sockets, stream de ficheros o actores de akka.
• Es importante usar entradas de datos con tolerancia a fallos y alto throughput.
65. SPARK STREAMING OVERVIEW
TransformRDD ForeachRDD
def transform[U](transformFunc: (RDD[T]) ⇒ RDD[U])
: DStream[U]
def foreachRDD(foreachFunc: (RDD[T], Time) ⇒ Unit): Unit
• Mezclar batch con streaming
• Usar DataFrames en Streaming
• Machine Learning en Streaming
• Reusar código existente de Batch
• Enviar datos a sistemas externos (ej. DB)
• Usar datasources de Spark SQL
66. Spark Streaming
Hay operaciones especiales que mantienen estados y se actualizan en cada batch interval, son llamadas
stateful.
• Estas operaciones son UpdateStateByKey y ReduceByKeyAndWindow
• Estos estados se mantienen en memoria. Se pueden crear, actualizar y eliminar.
• Estas operaciones requieren de checkpointing para recuperación de errores.
El flujo normal de un stream es el siguiente
• Cada Batch interval se genera un Dstream
• A los datos contenidos en ese Dstream se le aplican transformaciones
• Se realiza una o varias acciones con estos datos.
67. Spark Streaming
UpdateStateByKey ReduceByKeyAndWindow
def updateStateByKey[S](updateFunc: (Seq[V], Option[S])
⇒ Option[S])
def reduceByKeyAndWindow(reduceFunc: (V, V) ⇒ V,
windowDuration: Duration)
• Para cada clave K mantiene un Option[S]
• Option a None elimina el estado.
• Es igual que un reduceByKey pero
adicionalmente toma una ventana de tiempo.
72. MlLib
MlLib es la librería de Machine Learning de Spark. Su objetivo es dar los mecanismos necesarios para
poder realizar diferentes algoritmias de Machine Learning aplicadas a grandes cantidades de datos.
Como todas las piezas del ecosistema de Spark, tiene como base los RDDs para la ejecución de estas
algoritmias.
MlLib “únicamente” nos proporciona, de una manera sencilla y eficiente, los métodos y las API
necesarias para poder ejecutarlos, pero estos algoritmos tienen que ser alimentados por modelos
matemáticos generados por el usuario.
73. MlLib
MlLib tiene implementados varios algoritmos de distinta índole para distintos problemas de Machine
Learning.
Dada la variedad de algoritmia relacionadas con el Machine Learning y su complejidad explicar cada
uno de estos algoritmos queda fuera de este taller. No obstante pasamos ahora a enumerar los
distintos algoritmos soportados por MlLib
74. MlLib
Classification and regression
linear models (SVMs, logistic regression, linear regression)
naive Bayes
decision trees
ensembles of trees (Random Forests and Gradient-Boosted Trees)
isotonic regression
75. MlLib
Dimensionality reduction
singular value decomposition (SVD)
principal component analysis (PCA)
Feature extraction and transformation
Frequent pattern mining
FP-growth
association rules
PrefixSpan
77. MlLib
import org.apache.spark.mllib.recommendation.ALS
import org.apache.spark.mllib.recommendation.MatrixFactorizationModel
import org.apache.spark.mllib.recommendation.Rating
val data = sc.textFile("data/mllib/als/test.data")
val ratings = data.map(_.split(',') match { case Array(user, item, rate) =>
Rating(user.toInt, item.toInt, rate.toDouble)
})
val rank = 10
val numIterations = 10
val model = ALS.train(ratings, rank, numIterations, 0.01)
val usersProducts = ratings.map {
case Rating(user, product, rate) => (user, product)
}
val predictions = model.predict(usersProducts).map { case Rating(user, product, rate) =>
((user, product), rate)
}
val ratesAndPreds = ratings.map { case Rating(user, product, rate) =>
((user, product), rate)
}.join(predictions)
78. MlLib
import org.apache.spark.mllib.clustering.{KMeans, KMeansModel}
import org.apache.spark.mllib.linalg.Vectors
// Load and parse the data
val data = sc.textFile("data/mllib/kmeans_data.txt")
val parsedData = data.map(s => Vectors.dense(s.split(' ').map(_.toDouble))).cache()
// Cluster the data into two classes using KMeans
val numClusters = 2
val numIterations = 20
val clusters = KMeans.train(parsedData, numClusters, numIterations)
// Evaluate clustering by computing Within Set Sum of Squared Errors
val WSSSE = clusters.computeCost(parsedData)
println("Within Set Sum of Squared Errors = " + WSSSE)
// Save and load model
clusters.save(sc, "myModelPath")
val sameModel = KMeansModel.load(sc, "myModelPath")