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.
Introducción a Apache Spark a través de un caso de uso cotidiano
1. PPrroocceessaammiieennttoo ddee ddaattooss
rroobbuussttoo yy eessccaallaabbllee ccoonn
AAppaacchhee SSppaarrkk
Ing. Adrián Fernando Fiore
Ingeniero en Sistemas UTN FRBA
Docente de Algoritmos y Estructura de Datos
Desarrollador Backend en Socialmetrix
@AdrianFiore
Ing. Pablo Romanelli
Ingeniero en Sistemas UTN FRBA
Docente de Técnicas Avanzadas de Programación
Desarrollador Scala en Socialmetrix
@PabloRomanelli2
2. Agenda
• Qué hacemos?
• Problema a resolver
• Evolución de la solución
• Spark
• Resolución del problema
• Ventajas obtenidas
3. Medimos la actividad de las compañías y
personalidades en las redes sociales para
generar valor a profesionales de Marketing,
Investigación de Mercado y Producto.
Software As A Service
4.
5. Problema
Econtrar cuantas veces una cuenta
de Twitter es mencionada junto
con un hashtag
Restricciones:
•En un intervalo de tiempo
•Para un conjunto finito de cuentas
y tweets
7. Evolución de la solución
HHaaddoooopp MMaapp RReedduuccee
Ventajas
• Escalable (voy creciendo a demanda)
• Se puede usar Amazon EMR (fácil de administrar)
• No hay costo de licencias, solo levantar los servers
Desventajas
• Hay que implementar la lógica en términos de map
y reduce
• Se necesita mucho código para implementar
acciones simples como join, group, etc.
• Es batch, lento (baja a disco por cada etapa de
procesamiento)
8. Evolución de la solución
AAppaacchhee HHiivvee
Ventajas
• Capa de abstracción sobre Hadoop Map Reduce
(tenemos todas sus ventajas)
• La lógica se implementa en SQL (algo ya conocido
que me abstrae del código complejo de map y
reduce)
Desventajas
• Lenguaje SQL no está orientado a flujo de datos
sino a consultas
• No hay un IDE de desarrollo
• Difícil de testear, difícil de encontrar bugs
• Tiempos de ejecución prolongados y variables
9. Evolución de la solución
AAppaacchhee SSppaarrkk
• Motor de procesamiento distribuido para Big Data
• Puede utilizarse sobre Java, Scala o Python
• Por qué lo elegimos?
• Qué ventajas nos trae?
• Cómo resulvo el problema usando Spark?
10. Ejemplos para entender el problema
{
"text": "@adrian vamos a la #javaconf",
"user": {
"screen_name": "pablo",
...
},
"entities": {
"hashtags": [
{
"text": "javaconf",
...
}
],
"user_mentions": [
{
"screen_name": "adrian",
...
}
],
...
},
...
}
List(
(adrian, javaconf)
)
RReessuultltaaddoo
21. Código Fuente
Con la resolución paso a paso
https://github.com/socialmetrix/spark-javaconf
22. Ventajas que nos da Spark
•Es open source, comunidad activa, suben material online
•Consola interactiva para hacer pruebas
•Lenguaje de programación (Scala, Java, Python):
• Programo en un lenguaje que conozco
• Puedo usar mis abstracciones (mis tipos de datos)
• Tengo un IDE que me ayuda a codear, a hacer refactors, etc.
• Las funciones del RDD se comportan igual que las de las listas (me abstrae que
luego corre distribuido)
•Testeable y Mantenible:
• Código corto y claro
• Me genera confianza en mi proceso
• Si hay un bug, puedo hacer un nuevo test y reproducirlo
•Consola de monitoreo simple y útil