● Comprender la necesidad del procesamiento de flujos
● Entender Apache Spark y su arquitectura
● Entender RDD y DAG como características principales de Spark
● Entender las librerías MLib y GraphX dentro de Spark
● Entender muchos casos de uso de Spark

● Procesamiento de grandes cantidades de datos a partir de un vasto conjunto de flujos de datos entrantes extremadamente rápidos
● Extracción de datos en movimiento
● Calcular métricas simples y aproximadas en tiempo real
● Relajar muchos requisitos de precisión computacional
● Ritmo de ingesta de datos elevado e imprevisible
● Control del programador frente a personas al azar
● Los datos son demasiado grandes para almacenarlos en la memoria
● Hacer un procesamiento simple en el flujo con cálculos mínimos. Por ejemplo:
● Analizar una ventana deslizante del flujo (tiempo o elementos de datos)
● Los elementos antiguos se deslizan fuera de la ventana
● Muestrear el flujo para obtener resultados aproximados
● Flujos de consulta minera
● Qué consultas son más frecuentes hoy
● Minería de secuencias de clics
● Qué URL se hacen clic con más frecuencia a esta hora
● Minería de redes IP conmutadas
● Identificar ataques de denegación de servicio
● Calcule las propiedades sin almacenar todo el flujo
● Limitar el número de pasos aritméticos por cada nuevo elemento de datos
● N es tan grande que queremos almacenar sólo O (log N)
● Filtrar el flujo para reducir el número de cosas que hay que hacer
● La eficiencia es esencial
● Consultas ad hoc y permanentes
● Es un algoritmo de streaming muy popular
● Puede mostrar si una URL ha sido vista antes
● Utiliza una larga cadena de 1's y unas cuantas funciones hash
● Cada nueva entrada utiliza todas las funciones hash para establecer los bits en la cadena de 1's
● Si la nueva entrada tiene el hash de todos los 1's en la cadena, entonces esa entrada ha sido vista antes
● Crea algunos falsos positivos, pero ningún falso negativo
●Apache Spark es un motor integrado, rápido, en memoria y de propósito general para el procesamiento de datos a gran escala
● Spark es ideal para tareas de procesamiento iterativo e interactivo en grandes conjuntos y flujos de datos
● Spark consigue un rendimiento entre 10 y 100 veces superior al de Hadoop al funcionar con una construcción en memoria denominada "conjuntos de datos distribuidos resistentes" (RDD), que ayudan a evitar las latencias que conllevan las lecturas y escrituras en disco
● Spark permite a los programadores desarrollar cadenas de datos complejas y de varios pasos utilizando el patrón de gráficos acíclicos dirigidos (DAG)
● Spark está escrito principalmente en Scala, un lenguaje de alto nivel. Las bibliotecas integradas de Spark (para el aprendizaje automático, el procesamiento de gráficos, el procesamiento de flujos y el SQL) ofrecen un procesamiento de datos rápido y sin fisuras, además de una gran productividad para el programador
● Spark se ha convertido en una alternativa más eficiente y productiva para Hadoop, es compatible con los sistemas de archivos y las herramientas de Hadoop




● Los RDD (Resilient Distributed Datasets), son colecciones inmutables y particionadas de registros. Mantienen los datos en memoria y pueden mejorar el rendimiento en un orden de magnitud
● Los RDDs sólo pueden crearse mediante: a) la lectura de datos de un almacenamiento estable como HDFS o b) transformaciones sobre RDDs existentes
● La API de Spark permite dos tipos principales de operaciones sobre RDDs: transformaciones y acciones. Las transformaciones incluyen map(), filter(), sample() y union()
Apache Storm
Mecanismo de Procesamiento de Spark

● //load the edges as a graph object
● val graph = GraphLoader.edgeListFile(sc, "outlink.txt")
● // Run pagerank
● val ranks = graph.pagerank(0.00000001).vértices
● // join the rank with the webpages
● val pages = sc.textFile("pages.txt").map{line => val fields = line.split(",") (fields(0).toLong, fields(1)) }
● val ranksByPagename = pages.join(ranks).map { case (id, (pagename, rank)) => (pagename, rank)}
● //print the output
● println(rankByPagename.collect().mkString("\n"))
1. Describir el ecosistema de Apache Spark
2. Comparar Spark y Hadoop en cuanto a su capacidad de hacer stream computing
3. ¿Qué es un RDD? ¿Cómo hace que Spark sea más rápido?
4. Describa tres capacidades principales de Spark para el análisis de datos