SlideShare una empresa de Scribd logo
1 de 24
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
Agenda 
• Qué hacemos? 
• Problema a resolver 
• Evolución de la solución 
• Spark 
• Resolución del problema 
• Ventajas obtenidas
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
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
Necesitamos una herramienta de 
procesamiento distribuido para grandes 
volúmenes de datos!!!
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)
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
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?
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
Ejemplos para entender el problema 
{ 
"text": "Hola @adrian", 
"user": { 
"screen_name": "pablo", 
... 
}, 
"entities": { 
"hashtags": [ 
], 
"user_mentions": [ 
{ 
"screen_name": "adrian", 
... 
} 
], 
... 
}, 
... 
} RReessuultltaaddoo List()
Ejemplos para entender el problema 
{ 
"text": "Codeando en #spark", 
"user": { 
"screen_name": "pablo", 
... 
}, 
"entities": { 
"hashtags": [ 
{ 
"text": "spark", 
... 
} 
], 
"user_mentions": [ 
], 
... 
}, 
... 
} RReessuultltaaddoo List()
Ejemplos para entender el problema 
{ 
"text": "@adrian aca en #javaconf usando #spark", 
"user": { 
"screen_name": "pablo", 
... 
}, 
"entities": { 
"hashtags": [ 
{ 
"text": "javaconf", 
... 
}, 
{ 
"text": "spark", 
... 
} 
], 
"user_mentions": [ 
{ 
"screen_name": "adrian", 
... 
} 
], 
... 
}, 
... 
} 
List( 
(adrian, javaconf), 
(adrian, spark) 
) 
RReessuultltaaddoo
Ejemplos para entender el problema 
"text": "@adrian aca en #javaconf usando #spark", 
"user": { 
"screen_name": "pablo", 
... 
}, 
"entities": { 
"hashtags": [ 
{ 
"text": "javaconf", 
... 
}, 
{ 
"text": "spark", 
... 
} 
], 
"user_mentions": [ 
{ 
"screen_name": "adrian", 
... 
} 
], 
... 
{ 
"text": "RT @pablo: @adrian aca en #javaconf usando ...", 
"user": { 
"screen_name": "pedro", 
... 
}, 
"entities": { 
"hashtags": [ 
{ 
"text": "javaconf", 
... 
} 
], 
"user_mentions": [ 
{ 
"screen_name": "adrian", 
... 
}, 
{ 
"screen_name": "pablo", 
... 
} 
], 
... 
}, 
"retweeted_status": {…}, 
... 
} 
List( 
(adrian, javaconf), 
(adrian, spark), 
(pablo, javaconf), 
(pablo, spark) 
) 
Resultado
Ejemplos para entender el problema 
List( 
List( 
(adrian, javaconf) 
), List(), 
List(), 
List( 
(adrian, javaconf), (adrian, spark) 
), List( 
(adrian, javaconf), (adrian, spark), 
(pablo, javaconf), (pablo, spark) 
) 
) 
List( 
( 
(adrian, javaconf), 
3 
), 
( 
(adrian,spark), 
2 
), 
( 
(pablo,javaconf), 
1 
), 
( 
(pablo,spark), 
1 
) 
)
Algunos ejemplos en Spark Shell
Ejemplos para entender el problema 
List( 
List( 
(adrian, javaconf) 
), List(), 
List(), 
List( 
(adrian, javaconf), (adrian, spark) 
), List( 
(adrian, javaconf), (adrian, spark), 
(pablo, javaconf), (pablo, spark) 
) 
) 
Tweets en Json
Ejemplos para entender el problema 
List( 
(adrian, javaconf), 
(adrian, javaconf), 
(adrian, spark), 
(adrian, javaconf), 
(adrian, spark), 
(pablo, javaconf), 
(pablo, spark) 
) 
List( 
List( 
(adrian, javaconf) 
), List(), 
List(), 
List( 
(adrian, javaconf), (adrian, spark) 
), List( 
(adrian, javaconf), (adrian, spark), 
(pablo, javaconf), (pablo, spark) 
) 
) 
fflalattMMaapp
Ejemplos para entender el problema 
List( 
( (adrian, javaconf), 1 ), 
( (adrian, javaconf), 1 ), 
( (adrian, spark), 1 ), 
( (adrian, javaconf), 1 ), 
( (adrian, spark), 1 ), 
( (pablo, javaconf), 1 ), 
( (pablo, spark), 1) 
) 
List( 
(adrian, javaconf), 
(adrian, javaconf), 
(adrian, spark), 
(adrian, javaconf), 
(adrian, spark), 
(pablo, javaconf), 
(pablo, spark) 
) 
mmaapp
Ejemplos para entender el problema 
List( 
( (adrian, javaconf), 3 ), 
( (adrian, spark), 2 ), 
( (pablo, javaconf), 1 ), 
( (pablo, spark), 1 ) 
) 
List( 
( (adrian, javaconf), 1 ), 
( (adrian, javaconf), 1 ), 
( (adrian, spark), 1 ), 
( (adrian, javaconf), 1 ), 
( (adrian, spark), 1 ), 
( (pablo, javaconf), 1 ), 
( (pablo, spark), 1) 
) 
rreedduucceeBByyKKeeyy
Código Fuente 
Con la resolución paso a paso 
https://github.com/socialmetrix/spark-javaconf
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
MUCHAS GRACIAS! 
jobs@socialmetrix.com 
Pablo y Adrián
Consultas

Más contenido relacionado

La actualidad más candente

Ventajas y desventajas de los sistemas rolap y molap
Ventajas y desventajas de los sistemas rolap y molapVentajas y desventajas de los sistemas rolap y molap
Ventajas y desventajas de los sistemas rolap y molapJuan Anaya
 
Stream processing in python with Apache Samza and Beam
Stream processing in python with Apache Samza and BeamStream processing in python with Apache Samza and Beam
Stream processing in python with Apache Samza and BeamHai Lu
 
Extending Flink SQL for stream processing use cases
Extending Flink SQL for stream processing use casesExtending Flink SQL for stream processing use cases
Extending Flink SQL for stream processing use casesFlink Forward
 
Optimising Geospatial Queries with Dynamic File Pruning
Optimising Geospatial Queries with Dynamic File PruningOptimising Geospatial Queries with Dynamic File Pruning
Optimising Geospatial Queries with Dynamic File PruningDatabricks
 
Near Real-Time Data Warehousing with Apache Spark and Delta Lake
Near Real-Time Data Warehousing with Apache Spark and Delta LakeNear Real-Time Data Warehousing with Apache Spark and Delta Lake
Near Real-Time Data Warehousing with Apache Spark and Delta LakeDatabricks
 
Best Practices for Building Robust Data Platform with Apache Spark and Delta
Best Practices for Building Robust Data Platform with Apache Spark and DeltaBest Practices for Building Robust Data Platform with Apache Spark and Delta
Best Practices for Building Robust Data Platform with Apache Spark and DeltaDatabricks
 
How to build a streaming Lakehouse with Flink, Kafka, and Hudi
How to build a streaming Lakehouse with Flink, Kafka, and HudiHow to build a streaming Lakehouse with Flink, Kafka, and Hudi
How to build a streaming Lakehouse with Flink, Kafka, and HudiFlink Forward
 
Introduction to Structured Streaming
Introduction to Structured StreamingIntroduction to Structured Streaming
Introduction to Structured StreamingKnoldus Inc.
 
Stream Processing Frameworks
Stream Processing FrameworksStream Processing Frameworks
Stream Processing FrameworksSirKetchup
 
Streaming SQL for Data Engineers: The Next Big Thing?
Streaming SQL for Data Engineers: The Next Big Thing?Streaming SQL for Data Engineers: The Next Big Thing?
Streaming SQL for Data Engineers: The Next Big Thing?Yaroslav Tkachenko
 
Banco temporal Influxdb + Grafana: Operando sua Plataforma
Banco temporal Influxdb + Grafana: Operando sua PlataformaBanco temporal Influxdb + Grafana: Operando sua Plataforma
Banco temporal Influxdb + Grafana: Operando sua PlataformaCelso Crivelaro
 
Metodologias modernas para el desarrollo de software
Metodologias modernas para el desarrollo de softwareMetodologias modernas para el desarrollo de software
Metodologias modernas para el desarrollo de softwareDeisy Sapaico
 
Google Dremel. Concept and Implementations.
Google Dremel. Concept and Implementations.Google Dremel. Concept and Implementations.
Google Dremel. Concept and Implementations.Vicente Orjales
 
ACID ORC, Iceberg, and Delta Lake—An Overview of Table Formats for Large Scal...
ACID ORC, Iceberg, and Delta Lake—An Overview of Table Formats for Large Scal...ACID ORC, Iceberg, and Delta Lake—An Overview of Table Formats for Large Scal...
ACID ORC, Iceberg, and Delta Lake—An Overview of Table Formats for Large Scal...Databricks
 
Building Better Data Pipelines using Apache Airflow
Building Better Data Pipelines using Apache AirflowBuilding Better Data Pipelines using Apache Airflow
Building Better Data Pipelines using Apache AirflowSid Anand
 
Apache Sentry for Hadoop security
Apache Sentry for Hadoop securityApache Sentry for Hadoop security
Apache Sentry for Hadoop securitybigdatagurus_meetup
 
Serverless Kafka and Spark in a Multi-Cloud Lakehouse Architecture
Serverless Kafka and Spark in a Multi-Cloud Lakehouse ArchitectureServerless Kafka and Spark in a Multi-Cloud Lakehouse Architecture
Serverless Kafka and Spark in a Multi-Cloud Lakehouse ArchitectureKai Wähner
 

La actualidad más candente (20)

Ventajas y desventajas de los sistemas rolap y molap
Ventajas y desventajas de los sistemas rolap y molapVentajas y desventajas de los sistemas rolap y molap
Ventajas y desventajas de los sistemas rolap y molap
 
Stream processing in python with Apache Samza and Beam
Stream processing in python with Apache Samza and BeamStream processing in python with Apache Samza and Beam
Stream processing in python with Apache Samza and Beam
 
Extending Flink SQL for stream processing use cases
Extending Flink SQL for stream processing use casesExtending Flink SQL for stream processing use cases
Extending Flink SQL for stream processing use cases
 
Optimising Geospatial Queries with Dynamic File Pruning
Optimising Geospatial Queries with Dynamic File PruningOptimising Geospatial Queries with Dynamic File Pruning
Optimising Geospatial Queries with Dynamic File Pruning
 
Near Real-Time Data Warehousing with Apache Spark and Delta Lake
Near Real-Time Data Warehousing with Apache Spark and Delta LakeNear Real-Time Data Warehousing with Apache Spark and Delta Lake
Near Real-Time Data Warehousing with Apache Spark and Delta Lake
 
Best Practices for Building Robust Data Platform with Apache Spark and Delta
Best Practices for Building Robust Data Platform with Apache Spark and DeltaBest Practices for Building Robust Data Platform with Apache Spark and Delta
Best Practices for Building Robust Data Platform with Apache Spark and Delta
 
How to build a streaming Lakehouse with Flink, Kafka, and Hudi
How to build a streaming Lakehouse with Flink, Kafka, and HudiHow to build a streaming Lakehouse with Flink, Kafka, and Hudi
How to build a streaming Lakehouse with Flink, Kafka, and Hudi
 
Introduction to Structured Streaming
Introduction to Structured StreamingIntroduction to Structured Streaming
Introduction to Structured Streaming
 
Stream Processing Frameworks
Stream Processing FrameworksStream Processing Frameworks
Stream Processing Frameworks
 
Streaming SQL for Data Engineers: The Next Big Thing?
Streaming SQL for Data Engineers: The Next Big Thing?Streaming SQL for Data Engineers: The Next Big Thing?
Streaming SQL for Data Engineers: The Next Big Thing?
 
Banco temporal Influxdb + Grafana: Operando sua Plataforma
Banco temporal Influxdb + Grafana: Operando sua PlataformaBanco temporal Influxdb + Grafana: Operando sua Plataforma
Banco temporal Influxdb + Grafana: Operando sua Plataforma
 
Metodologias modernas para el desarrollo de software
Metodologias modernas para el desarrollo de softwareMetodologias modernas para el desarrollo de software
Metodologias modernas para el desarrollo de software
 
Google Dremel. Concept and Implementations.
Google Dremel. Concept and Implementations.Google Dremel. Concept and Implementations.
Google Dremel. Concept and Implementations.
 
ACID ORC, Iceberg, and Delta Lake—An Overview of Table Formats for Large Scal...
ACID ORC, Iceberg, and Delta Lake—An Overview of Table Formats for Large Scal...ACID ORC, Iceberg, and Delta Lake—An Overview of Table Formats for Large Scal...
ACID ORC, Iceberg, and Delta Lake—An Overview of Table Formats for Large Scal...
 
Building Better Data Pipelines using Apache Airflow
Building Better Data Pipelines using Apache AirflowBuilding Better Data Pipelines using Apache Airflow
Building Better Data Pipelines using Apache Airflow
 
MongoDB
MongoDBMongoDB
MongoDB
 
Apache Sentry for Hadoop security
Apache Sentry for Hadoop securityApache Sentry for Hadoop security
Apache Sentry for Hadoop security
 
Apache Spark & Streaming
Apache Spark & StreamingApache Spark & Streaming
Apache Spark & Streaming
 
Scala and spark
Scala and sparkScala and spark
Scala and spark
 
Serverless Kafka and Spark in a Multi-Cloud Lakehouse Architecture
Serverless Kafka and Spark in a Multi-Cloud Lakehouse ArchitectureServerless Kafka and Spark in a Multi-Cloud Lakehouse Architecture
Serverless Kafka and Spark in a Multi-Cloud Lakehouse Architecture
 

Similar a Procesamiento de datos robusto y escalable con Apache Spark

"Meta datos & Google Rich Snippets" por @iplarodriguez
"Meta datos & Google Rich Snippets" por @iplarodriguez"Meta datos & Google Rich Snippets" por @iplarodriguez
"Meta datos & Google Rich Snippets" por @iplarodriguezwebcat
 
Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...
Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...
Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...Aragón Open Data
 
Novedades de Java 8 por PERU JUG
Novedades de Java 8 por PERU JUGNovedades de Java 8 por PERU JUG
Novedades de Java 8 por PERU JUGjose diaz
 
Gestión y Análisis de Datos para las Ciencias Económicas con Python y R
Gestión y Análisis de Datos para las Ciencias Económicas con Python y RGestión y Análisis de Datos para las Ciencias Económicas con Python y R
Gestión y Análisis de Datos para las Ciencias Económicas con Python y RFrancisco Palm
 
Cursos Big Data Open Source
Cursos Big Data Open SourceCursos Big Data Open Source
Cursos Big Data Open SourceStratebi
 
Intro. Lenguaje de Programación Java - Algoritmia
Intro. Lenguaje de Programación Java - AlgoritmiaIntro. Lenguaje de Programación Java - Algoritmia
Intro. Lenguaje de Programación Java - AlgoritmiaDaniel Gómez
 
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...Eudris Cabrera
 
Introducción a RubyOnRails
Introducción a RubyOnRailsIntroducción a RubyOnRails
Introducción a RubyOnRailsPablo Marrero
 
Computación evolutiva no tradicional
Computación evolutiva no tradicionalComputación evolutiva no tradicional
Computación evolutiva no tradicionalJuan J. Merelo
 
09b jsf (1)
09b jsf (1)09b jsf (1)
09b jsf (1)UTN
 
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018Eudris Cabrera
 
Programacion web
Programacion webProgramacion web
Programacion webIACSA
 
Fundamentos-de-programacion-c-ricardo-villalobos.pdf
Fundamentos-de-programacion-c-ricardo-villalobos.pdfFundamentos-de-programacion-c-ricardo-villalobos.pdf
Fundamentos-de-programacion-c-ricardo-villalobos.pdfssuserf46a26
 
Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018Eudris Cabrera
 
Programacion orientada a objetos en javascript
Programacion orientada a objetos en javascriptProgramacion orientada a objetos en javascript
Programacion orientada a objetos en javascriptRobert Moreira
 
Compilador Usando Jflex y Cup
Compilador Usando Jflex y CupCompilador Usando Jflex y Cup
Compilador Usando Jflex y Cupditopo
 
Intelligent Methods for Information Access in Context: The Role of Topic Desc...
Intelligent Methods for Information Access in Context: The Role of Topic Desc...Intelligent Methods for Information Access in Context: The Role of Topic Desc...
Intelligent Methods for Information Access in Context: The Role of Topic Desc...Carlos Lorenzetti
 
RAD Portlet Development using XMLPortletFactory
RAD Portlet Development using XMLPortletFactoryRAD Portlet Development using XMLPortletFactory
RAD Portlet Development using XMLPortletFactoryJack A. Rider
 

Similar a Procesamiento de datos robusto y escalable con Apache Spark (20)

"Meta datos & Google Rich Snippets" por @iplarodriguez
"Meta datos & Google Rich Snippets" por @iplarodriguez"Meta datos & Google Rich Snippets" por @iplarodriguez
"Meta datos & Google Rich Snippets" por @iplarodriguez
 
Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...
Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...
Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...
 
Novedades de Java 8 por PERU JUG
Novedades de Java 8 por PERU JUGNovedades de Java 8 por PERU JUG
Novedades de Java 8 por PERU JUG
 
Gestión y Análisis de Datos para las Ciencias Económicas con Python y R
Gestión y Análisis de Datos para las Ciencias Económicas con Python y RGestión y Análisis de Datos para las Ciencias Económicas con Python y R
Gestión y Análisis de Datos para las Ciencias Económicas con Python y R
 
Cursos Big Data Open Source
Cursos Big Data Open SourceCursos Big Data Open Source
Cursos Big Data Open Source
 
Intro. Lenguaje de Programación Java - Algoritmia
Intro. Lenguaje de Programación Java - AlgoritmiaIntro. Lenguaje de Programación Java - Algoritmia
Intro. Lenguaje de Programación Java - Algoritmia
 
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
 
Introducción a RubyOnRails
Introducción a RubyOnRailsIntroducción a RubyOnRails
Introducción a RubyOnRails
 
Computación evolutiva no tradicional
Computación evolutiva no tradicionalComputación evolutiva no tradicional
Computación evolutiva no tradicional
 
09b jsf (1)
09b jsf (1)09b jsf (1)
09b jsf (1)
 
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
 
Programacion web
Programacion webProgramacion web
Programacion web
 
Visualfoxpro
VisualfoxproVisualfoxpro
Visualfoxpro
 
Fundamentos-de-programacion-c-ricardo-villalobos.pdf
Fundamentos-de-programacion-c-ricardo-villalobos.pdfFundamentos-de-programacion-c-ricardo-villalobos.pdf
Fundamentos-de-programacion-c-ricardo-villalobos.pdf
 
Empezando con Angular 2
Empezando con Angular 2Empezando con Angular 2
Empezando con Angular 2
 
Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018
 
Programacion orientada a objetos en javascript
Programacion orientada a objetos en javascriptProgramacion orientada a objetos en javascript
Programacion orientada a objetos en javascript
 
Compilador Usando Jflex y Cup
Compilador Usando Jflex y CupCompilador Usando Jflex y Cup
Compilador Usando Jflex y Cup
 
Intelligent Methods for Information Access in Context: The Role of Topic Desc...
Intelligent Methods for Information Access in Context: The Role of Topic Desc...Intelligent Methods for Information Access in Context: The Role of Topic Desc...
Intelligent Methods for Information Access in Context: The Role of Topic Desc...
 
RAD Portlet Development using XMLPortletFactory
RAD Portlet Development using XMLPortletFactoryRAD Portlet Development using XMLPortletFactory
RAD Portlet Development using XMLPortletFactory
 

Más de Socialmetrix

7 Disparadores de Engagement para o mercado de consumo massivo
7 Disparadores de Engagement para o mercado de consumo massivo7 Disparadores de Engagement para o mercado de consumo massivo
7 Disparadores de Engagement para o mercado de consumo massivoSocialmetrix
 
The Ultimate Guide to using Social Media Media Analytics
The Ultimate Guide to using Social Media Media AnalyticsThe Ultimate Guide to using Social Media Media Analytics
The Ultimate Guide to using Social Media Media AnalyticsSocialmetrix
 
Social Media is no longer something relevant just for the area of Marketing. ...
Social Media is no longer something relevant just for the area of Marketing. ...Social Media is no longer something relevant just for the area of Marketing. ...
Social Media is no longer something relevant just for the area of Marketing. ...Socialmetrix
 
How to Create a Successful Social Media Campaign
How to Create a Successful Social Media CampaignHow to Create a Successful Social Media Campaign
How to Create a Successful Social Media CampaignSocialmetrix
 
¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?Socialmetrix
 
AWS re:Invent 2014 | (ARC202) Real-World Real-Time Analytics
AWS re:Invent 2014 | (ARC202) Real-World Real-Time AnalyticsAWS re:Invent 2014 | (ARC202) Real-World Real-Time Analytics
AWS re:Invent 2014 | (ARC202) Real-World Real-Time AnalyticsSocialmetrix
 
Tutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtimeTutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtimeSocialmetrix
 
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Socialmetrix
 
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...Socialmetrix
 
Introducción a Apache Spark
Introducción a Apache SparkIntroducción a Apache Spark
Introducción a Apache SparkSocialmetrix
 
Social media brasil 2014 - O Marketing e as Redes Sociais em tempos de conver...
Social media brasil 2014 - O Marketing e as Redes Sociais em tempos de conver...Social media brasil 2014 - O Marketing e as Redes Sociais em tempos de conver...
Social media brasil 2014 - O Marketing e as Redes Sociais em tempos de conver...Socialmetrix
 
14º Encontro Locaweb - Evolução das Plataformas para Métricas Sociais
14º Encontro Locaweb - Evolução das Plataformas para Métricas Sociais14º Encontro Locaweb - Evolução das Plataformas para Métricas Sociais
14º Encontro Locaweb - Evolução das Plataformas para Métricas SociaisSocialmetrix
 
Jugar Introduccion a Scala
Jugar Introduccion a ScalaJugar Introduccion a Scala
Jugar Introduccion a ScalaSocialmetrix
 
Endeavor – métricas em mídias sociais
Endeavor – métricas em mídias sociaisEndeavor – métricas em mídias sociais
Endeavor – métricas em mídias sociaisSocialmetrix
 
MongoDB, RabbitMQ y Applicaciones en Nube
MongoDB, RabbitMQ y Applicaciones en NubeMongoDB, RabbitMQ y Applicaciones en Nube
MongoDB, RabbitMQ y Applicaciones en NubeSocialmetrix
 

Más de Socialmetrix (17)

7 Disparadores de Engagement para o mercado de consumo massivo
7 Disparadores de Engagement para o mercado de consumo massivo7 Disparadores de Engagement para o mercado de consumo massivo
7 Disparadores de Engagement para o mercado de consumo massivo
 
The Ultimate Guide to using Social Media Media Analytics
The Ultimate Guide to using Social Media Media AnalyticsThe Ultimate Guide to using Social Media Media Analytics
The Ultimate Guide to using Social Media Media Analytics
 
Social Media is no longer something relevant just for the area of Marketing. ...
Social Media is no longer something relevant just for the area of Marketing. ...Social Media is no longer something relevant just for the area of Marketing. ...
Social Media is no longer something relevant just for the area of Marketing. ...
 
How to Create a Successful Social Media Campaign
How to Create a Successful Social Media CampaignHow to Create a Successful Social Media Campaign
How to Create a Successful Social Media Campaign
 
¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?
 
AWS re:Invent 2014 | (ARC202) Real-World Real-Time Analytics
AWS re:Invent 2014 | (ARC202) Real-World Real-Time AnalyticsAWS re:Invent 2014 | (ARC202) Real-World Real-Time Analytics
AWS re:Invent 2014 | (ARC202) Real-World Real-Time Analytics
 
Tutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtimeTutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtime
 
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
 
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
 
Introducción a Apache Spark
Introducción a Apache SparkIntroducción a Apache Spark
Introducción a Apache Spark
 
Social media brasil 2014 - O Marketing e as Redes Sociais em tempos de conver...
Social media brasil 2014 - O Marketing e as Redes Sociais em tempos de conver...Social media brasil 2014 - O Marketing e as Redes Sociais em tempos de conver...
Social media brasil 2014 - O Marketing e as Redes Sociais em tempos de conver...
 
14º Encontro Locaweb - Evolução das Plataformas para Métricas Sociais
14º Encontro Locaweb - Evolução das Plataformas para Métricas Sociais14º Encontro Locaweb - Evolução das Plataformas para Métricas Sociais
14º Encontro Locaweb - Evolução das Plataformas para Métricas Sociais
 
Call2Social
Call2SocialCall2Social
Call2Social
 
Redis
RedisRedis
Redis
 
Jugar Introduccion a Scala
Jugar Introduccion a ScalaJugar Introduccion a Scala
Jugar Introduccion a Scala
 
Endeavor – métricas em mídias sociais
Endeavor – métricas em mídias sociaisEndeavor – métricas em mídias sociais
Endeavor – métricas em mídias sociais
 
MongoDB, RabbitMQ y Applicaciones en Nube
MongoDB, RabbitMQ y Applicaciones en NubeMongoDB, RabbitMQ y Applicaciones en Nube
MongoDB, RabbitMQ y Applicaciones en Nube
 

Último

PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Marketing BRANDING
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdfsharitcalderon04
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armadob7fwtwtfxf
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxkimontey
 

Último (20)

PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdf
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armado
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
 

Procesamiento de datos robusto y escalable con Apache Spark

  • 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
  • 6. Necesitamos una herramienta de procesamiento distribuido para grandes volúmenes de datos!!!
  • 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
  • 11. Ejemplos para entender el problema { "text": "Hola @adrian", "user": { "screen_name": "pablo", ... }, "entities": { "hashtags": [ ], "user_mentions": [ { "screen_name": "adrian", ... } ], ... }, ... } RReessuultltaaddoo List()
  • 12. Ejemplos para entender el problema { "text": "Codeando en #spark", "user": { "screen_name": "pablo", ... }, "entities": { "hashtags": [ { "text": "spark", ... } ], "user_mentions": [ ], ... }, ... } RReessuultltaaddoo List()
  • 13. Ejemplos para entender el problema { "text": "@adrian aca en #javaconf usando #spark", "user": { "screen_name": "pablo", ... }, "entities": { "hashtags": [ { "text": "javaconf", ... }, { "text": "spark", ... } ], "user_mentions": [ { "screen_name": "adrian", ... } ], ... }, ... } List( (adrian, javaconf), (adrian, spark) ) RReessuultltaaddoo
  • 14. Ejemplos para entender el problema "text": "@adrian aca en #javaconf usando #spark", "user": { "screen_name": "pablo", ... }, "entities": { "hashtags": [ { "text": "javaconf", ... }, { "text": "spark", ... } ], "user_mentions": [ { "screen_name": "adrian", ... } ], ... { "text": "RT @pablo: @adrian aca en #javaconf usando ...", "user": { "screen_name": "pedro", ... }, "entities": { "hashtags": [ { "text": "javaconf", ... } ], "user_mentions": [ { "screen_name": "adrian", ... }, { "screen_name": "pablo", ... } ], ... }, "retweeted_status": {…}, ... } List( (adrian, javaconf), (adrian, spark), (pablo, javaconf), (pablo, spark) ) Resultado
  • 15. Ejemplos para entender el problema List( List( (adrian, javaconf) ), List(), List(), List( (adrian, javaconf), (adrian, spark) ), List( (adrian, javaconf), (adrian, spark), (pablo, javaconf), (pablo, spark) ) ) List( ( (adrian, javaconf), 3 ), ( (adrian,spark), 2 ), ( (pablo,javaconf), 1 ), ( (pablo,spark), 1 ) )
  • 16. Algunos ejemplos en Spark Shell
  • 17. Ejemplos para entender el problema List( List( (adrian, javaconf) ), List(), List(), List( (adrian, javaconf), (adrian, spark) ), List( (adrian, javaconf), (adrian, spark), (pablo, javaconf), (pablo, spark) ) ) Tweets en Json
  • 18. Ejemplos para entender el problema List( (adrian, javaconf), (adrian, javaconf), (adrian, spark), (adrian, javaconf), (adrian, spark), (pablo, javaconf), (pablo, spark) ) List( List( (adrian, javaconf) ), List(), List(), List( (adrian, javaconf), (adrian, spark) ), List( (adrian, javaconf), (adrian, spark), (pablo, javaconf), (pablo, spark) ) ) fflalattMMaapp
  • 19. Ejemplos para entender el problema List( ( (adrian, javaconf), 1 ), ( (adrian, javaconf), 1 ), ( (adrian, spark), 1 ), ( (adrian, javaconf), 1 ), ( (adrian, spark), 1 ), ( (pablo, javaconf), 1 ), ( (pablo, spark), 1) ) List( (adrian, javaconf), (adrian, javaconf), (adrian, spark), (adrian, javaconf), (adrian, spark), (pablo, javaconf), (pablo, spark) ) mmaapp
  • 20. Ejemplos para entender el problema List( ( (adrian, javaconf), 3 ), ( (adrian, spark), 2 ), ( (pablo, javaconf), 1 ), ( (pablo, spark), 1 ) ) List( ( (adrian, javaconf), 1 ), ( (adrian, javaconf), 1 ), ( (adrian, spark), 1 ), ( (adrian, javaconf), 1 ), ( (adrian, spark), 1 ), ( (pablo, javaconf), 1 ), ( (pablo, spark), 1) ) rreedduucceeBByyKKeeyy
  • 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