SlideShare una empresa de Scribd logo
Tutorial en Apache Spark 
Clasificando Tweets en Realtime 
Gustavo Arjones 
gustavo@socialmetrix.com 
@arjones
AGENDA 
• Qué es Apache Spark? 
• Introducción a Scala 
• Crear un pipeline con Apache Spark (Word Count) 
• Cargar JSON de Tweets (Statuses) 
• Crear un programa que consume del stream (simulado) 
• Obtener los lenguajes de programación más hablados 
• Por usuario, por url, por localización
Qué es 
Apache Spark?
Qué es Spark? 
Apache Spark™ is a fast and general engine for large-scale data 
processing. 
• Procesamiento In-memory (preferentemente) 
• Framework de Procesamiento Unificado 
• Para Ingenieros & Data Scientists
Principales Pilares 
Task Scheduler 
• Prepara los jobs a través de DAG (Directed acyclic graph) 
• Concatena funciones para ejecutar los stages 
• Cache-aware; considera utilización & localización de datos 
(data locality) 
• Partitioning-aware para reducir shuffles por la red 
RDD (Resilient Distributed Datasets) 
• 
Estructura de datos Inmutable (In-memory) 
• Tolerante a fallas (Se rearma en caso de falla) 
• Estructura de datos que puede ser operada en paralelo 
• Rica interfaz de Transformations & Actions
Plataforma Unificada
Hands On!
DISCLAIMER 
Para que los ejercicios sean realizados dentro del tiempo 
establecido para el laboratorio los datasets son chicos. 
Las soluciones que desarrollamos acá pueden escalar 
para cientos de servidores y Terabytes de datos 
Las técnicas se aplican a mayor Volumen y Velocidad: 
Internet Of Things (IoT), Logs, games, mobile, etc
Introducción a 
#Scala
Declarando Variables 
val 
à 
declara 
variables 
inmutables 
(final 
en 
Java)
Declarando Función 
Crear una función que calcule el valor al cubo 
def 
à 
declara 
función 
scala> cube(10) 
res0: Int = 1000
Usar MAP 
NOTA: Es una función, no la estructura de datos! 
Aplicar la función cube() a la lista de números myNumbers 
scala> myNumbers.map(cube(_)) 
scala> myNumbers.map(cube)
Usar Map and Tuples 
Tuples son estructura auxiliares que permiten llevar multiplos 
valores sin necesidad de crear clases (VO) 
scala> myNumbers.map(n => (n, cube(n))) 
res1: List[(Int, Int)] = List((1,1), (2,8), (5,125), (4,64), (7,343), (3,27)) 
scala> myNumbers.map(n => (n, cube(n))).foreach(println) 
(1,1) 
(2,8) 
(5,125) 
(4,64) 
(7,343) 
(3,27)
Usar Filter 
Aplicar Filter a la lista myNumbers dejando solo impares 
scala> myNumbers.filter(n => (n % 2) == 1) 
res6: List[Int] = List(1, 5, 7, 3) 
scala> myNumbers.filter(_ % 2 == 1) 
res6: List[Int] = List(1, 5, 7, 3)
Usar Reduce 
Sumar todos los elementos de la lista 
scala> myNumbers.reduce((x, y) => x + y) 
res10: Int = 22 
scala> myNumbers.reduce(_ + _)
CHALLENGE 
Sumar todos los números pares en el rango de 0-99 
TIP: 
scala> val numbers = Range(0, 100) 
numbers: scala.collection.immutable.Range = Range(0, 1, ..) 
scala> numbers.filter(_ % 2 == 0).reduce(_ + _) 
res2: Int = 2450
Creando el 
primero pipeline 
con Apache 
Spark 
Código Fuente: 
https://github.com/socialmetrix/wisit14
Contar Palabras
data/don-­‐quijote.txt.gz
data/don-­‐quijote.txt.gz
data/don-­‐quijote.txt.gz
data/don-­‐quijote.txt.gz
data/don-­‐quijote.txt.gz
data/don-­‐quijote.txt.gz
data/don-­‐quijote.txt.gz
Apache Spark es Lazy! 
Viste que no pasó nada hasta la última 
linea? 
Nada es procesado entre 
Transformaciones. 
Solo se ejecuta cuando se realiza una 
Acción (top)
API muy expresiva, mucho más operaciones! 
Ver: https://spark.apache.org/docs/latest/api/scala/#org.apache.spark.rdd.RDD
CHALLENGE 
El resultado no es muy interesante, porque las principales 
palabras son stopwords, remueverlas para dar mayor significado
Manipulando 
Tweets
Propuesta 
Crear un listado de los lenguajes más tweetados, similar al listado de 
lenguajes que crea Github 
http://adambard.com/blog/top-github-languages-2014/
Consideraciones 
• Dataset contiene un JSON por linea (one-liner) 
• Hay que interpretar JSON 
• Pueden haber erroes en los JSON 
– Lineas vacias 
– Lineas malformadas / Diferentes schemas
Obtener las TOP HASHTAGS (batch mode) 
Ver archivo 
./src/main/scala/smx/sql/TopHashtags.scala 
Compilar y Ejecutar 
./sbt/sbt assembly 
spark-submit  
--class smx.sql.TopHashtags  
target/scala-2.10/wisit2014-spark-assembly-0.0.1.jar  
data/tweets-20141126-sample.json
Procesando 
tweets en 
Real-time
Stream es una secuencia de RDD
Streaming 
Ver archivos 
./src/main/scala/smx/utils/SocketServer.scala 
Iniciar SocketServer (simula Twitter Streaming) 
java  
-cp target/scala-2.10/wisit2014-spark-assembly-0.0.1.jar  
smx.utils.SocketServer  
data/tweets-20141126-sample.json
Streaming (cont.) 
Ver archivo 
./src/main/scala/smx/stream/StreamProcessor.scala 
Iniciar Streaming Processor 
spark-submit  
--class smx.stream.StreamProcessor  
target/scala-2.10/wisit2014-spark-assembly-0.0.1.jar
h)p://localhost:4040/
CHALLENGE 
Cambiar de Hashtags para TOP Usuarios 
TIP: 
El usuario es user.screen_name en el JSON
Usando SparkStreaming con Twitter 
(necesita conexión de internet) 
Training Oficial 2014 
Stream Processing with Spark Streaming 
https://databricks-training.s3.amazonaws.com/realtime-processing-with- 
spark-streaming.html
Donde aprender 
más?
Mucha documentación disponible 
https://spark.apache.org/documentation.html 
http://spark-summit.org/2014/training 
http://arjon.es/tag/spark/ 
http://www.slideshare.net/frodriguezolivera/apache-spark- 
41601032 
First Steps to Scala 
http://www.artima.com/scalazine/articles/steps.html 
http://shop.oreilly.com/ 
product/0636920028512.do
Gracias & Obrigado! 
Gustavo Arjones 
gustavo@socialmetrix.com 
@arjones 
jobs@socialmetrix.com

Más contenido relacionado

La actualidad más candente

Procesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache SparkProcesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache Spark
Software Guru
 
Introducción a Apache Spark
Introducción a Apache SparkIntroducción a Apache Spark
Introducción a Apache Spark
Socialmetrix
 
Apache spark meetup
Apache spark meetupApache spark meetup
Apache spark meetup
Israel Gaytan
 
Estudio sobre Spark, Storm, Kafka y Hive
Estudio sobre Spark, Storm, Kafka y HiveEstudio sobre Spark, Storm, Kafka y Hive
Estudio sobre Spark, Storm, Kafka y Hive
Wellness Telecom
 
OpenAnalytics Madrid 2014: Spark
OpenAnalytics Madrid 2014: SparkOpenAnalytics Madrid 2014: Spark
OpenAnalytics Madrid 2014: Spark
Francisco Javier Pulido Piñero
 
Big data con Hadoop y SSIS 2016
Big data con Hadoop y SSIS 2016Big data con Hadoop y SSIS 2016
Big data con Hadoop y SSIS 2016
Ángel Rayo
 
Data crunching con Spark
Data crunching con SparkData crunching con Spark
Data crunching con Spark
Big Data Colombia
 
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
 
Aula virtual apache_hadoop_v3 1
Aula virtual apache_hadoop_v3 1Aula virtual apache_hadoop_v3 1
Aula virtual apache_hadoop_v3 1
Moisés Martínez Mateu
 
Open analytics. data analytics con hadoop
Open analytics. data analytics con hadoopOpen analytics. data analytics con hadoop
Open analytics. data analytics con hadoop
Fco. Javier Lahoz Sevilla
 
Introducción a hadoop
Introducción a hadoopIntroducción a hadoop
Introducción a hadoop
Carlos Meseguer Gimenez
 
Spark web meetup
Spark web meetupSpark web meetup
Spark web meetup
Jorge Lopez-Malla
 
Meetup Spark y la Combinación de sus Distintos Módulos
Meetup Spark y la Combinación de sus Distintos MódulosMeetup Spark y la Combinación de sus Distintos Módulos
Meetup Spark y la Combinación de sus Distintos Módulos
Jorge Lopez-Malla
 
Log -Analytics con Apache-Flume Elasticsearch HDFS Kibana
 Log -Analytics con Apache-Flume  Elasticsearch HDFS Kibana Log -Analytics con Apache-Flume  Elasticsearch HDFS Kibana
Log -Analytics con Apache-Flume Elasticsearch HDFS Kibana
Felix Rodriguez
 
Hadoop: tecnologias relacionadas
Hadoop: tecnologias relacionadasHadoop: tecnologias relacionadas
Hadoop: tecnologias relacionadas
Tomás Fernández Pena
 
Creación de un clúster de Hadoop con Cloudera
Creación de un clúster de Hadoop con ClouderaCreación de un clúster de Hadoop con Cloudera
Creación de un clúster de Hadoop con Cloudera
David Albela Pérez
 
Hadoop
HadoopHadoop
Curso introductorio a matlab
Curso introductorio a matlabCurso introductorio a matlab
Curso introductorio a matlab
Enric Cecilla Real
 
Big Data a traves de una implementación
Big Data a traves de una implementaciónBig Data a traves de una implementación
Big Data a traves de una implementación
Diego Krauthamer
 

La actualidad más candente (20)

Procesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache SparkProcesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache Spark
 
Introducción a Apache Spark
Introducción a Apache SparkIntroducción a Apache Spark
Introducción a Apache Spark
 
Apache spark meetup
Apache spark meetupApache spark meetup
Apache spark meetup
 
Estudio sobre Spark, Storm, Kafka y Hive
Estudio sobre Spark, Storm, Kafka y HiveEstudio sobre Spark, Storm, Kafka y Hive
Estudio sobre Spark, Storm, Kafka y Hive
 
OpenAnalytics Madrid 2014: Spark
OpenAnalytics Madrid 2014: SparkOpenAnalytics Madrid 2014: Spark
OpenAnalytics Madrid 2014: Spark
 
Big data con Hadoop y SSIS 2016
Big data con Hadoop y SSIS 2016Big data con Hadoop y SSIS 2016
Big data con Hadoop y SSIS 2016
 
Data crunching con Spark
Data crunching con SparkData crunching con Spark
Data crunching con Spark
 
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...
 
Aula virtual apache_hadoop_v3 1
Aula virtual apache_hadoop_v3 1Aula virtual apache_hadoop_v3 1
Aula virtual apache_hadoop_v3 1
 
Open analytics. data analytics con hadoop
Open analytics. data analytics con hadoopOpen analytics. data analytics con hadoop
Open analytics. data analytics con hadoop
 
Introducción a hadoop
Introducción a hadoopIntroducción a hadoop
Introducción a hadoop
 
Spark web meetup
Spark web meetupSpark web meetup
Spark web meetup
 
Hadoop en accion
Hadoop en accionHadoop en accion
Hadoop en accion
 
Meetup Spark y la Combinación de sus Distintos Módulos
Meetup Spark y la Combinación de sus Distintos MódulosMeetup Spark y la Combinación de sus Distintos Módulos
Meetup Spark y la Combinación de sus Distintos Módulos
 
Log -Analytics con Apache-Flume Elasticsearch HDFS Kibana
 Log -Analytics con Apache-Flume  Elasticsearch HDFS Kibana Log -Analytics con Apache-Flume  Elasticsearch HDFS Kibana
Log -Analytics con Apache-Flume Elasticsearch HDFS Kibana
 
Hadoop: tecnologias relacionadas
Hadoop: tecnologias relacionadasHadoop: tecnologias relacionadas
Hadoop: tecnologias relacionadas
 
Creación de un clúster de Hadoop con Cloudera
Creación de un clúster de Hadoop con ClouderaCreación de un clúster de Hadoop con Cloudera
Creación de un clúster de Hadoop con Cloudera
 
Hadoop
HadoopHadoop
Hadoop
 
Curso introductorio a matlab
Curso introductorio a matlabCurso introductorio a matlab
Curso introductorio a matlab
 
Big Data a traves de una implementación
Big Data a traves de una implementaciónBig Data a traves de una implementación
Big Data a traves de una implementación
 

Similar a Tutorial en Apache Spark - Clasificando tweets en realtime

Análisis de datos con Apache Spark
Análisis de datos con Apache SparkAnálisis de datos con Apache Spark
Análisis de datos con Apache Spark
Eduardo Castro
 
Meetup Fun[ctional] spark with scala
Meetup Fun[ctional] spark with scalaMeetup Fun[ctional] spark with scala
Meetup Fun[ctional] spark with scala
José Carlos García Serrano
 
Fun[ctional] spark with scala
Fun[ctional] spark with scalaFun[ctional] spark with scala
Fun[ctional] spark with scala
David Vallejo Navarro
 
Herramientas BigData.pptx
Herramientas BigData.pptxHerramientas BigData.pptx
Herramientas BigData.pptx
Mauricio Bedoya
 
Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010
Antonio Ognio
 
Resilient Distributed Dataset - Analisis paper
Resilient  Distributed Dataset - Analisis paper Resilient  Distributed Dataset - Analisis paper
Resilient Distributed Dataset - Analisis paper
Javier de la Rosa Fernandez
 
Motor De Bases De Datos Oracle
Motor De Bases De Datos OracleMotor De Bases De Datos Oracle
Motor De Bases De Datos Oracletriana25
 
Motor De Bases De Datos Oracle
Motor De Bases De Datos OracleMotor De Bases De Datos Oracle
Motor De Bases De Datos Oracletriana25
 
Motor De Bases De Datos Oracle
Motor De Bases De Datos OracleMotor De Bases De Datos Oracle
Motor De Bases De Datos Oracletriana25
 
GLUE (1).pdf
GLUE (1).pdfGLUE (1).pdf
GLUE (1).pdf
GerardoMoran16
 
CSA - Office.com sobre SharePoint
CSA - Office.com sobre SharePointCSA - Office.com sobre SharePoint
CSA - Office.com sobre SharePoint
Comunidad SharePoint
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
INGRID LESLY CORONEL ACUÑA
 
Scala en proyectos de vinculación Ancap-UR - 2013-03
Scala en proyectos de vinculación Ancap-UR - 2013-03Scala en proyectos de vinculación Ancap-UR - 2013-03
Scala en proyectos de vinculación Ancap-UR - 2013-03
Germán Ferrari
 
Base de datos_-_material_didactico
Base de datos_-_material_didacticoBase de datos_-_material_didactico
Base de datos_-_material_didacticoenriquehot
 
Curso Swift
Curso SwiftCurso Swift
Curso Swift
Platzi
 
EXPO PERL UTT
EXPO PERL UTTEXPO PERL UTT
EXPO PERL UTT
Casa Marzam
 
Primeros pasos con Spark - Spark Meetup Madrid 30-09-2014
Primeros pasos con Spark - Spark Meetup Madrid 30-09-2014Primeros pasos con Spark - Spark Meetup Madrid 30-09-2014
Primeros pasos con Spark - Spark Meetup Madrid 30-09-2014
Stratio
 

Similar a Tutorial en Apache Spark - Clasificando tweets en realtime (20)

Análisis de datos con Apache Spark
Análisis de datos con Apache SparkAnálisis de datos con Apache Spark
Análisis de datos con Apache Spark
 
Meetup Fun[ctional] spark with scala
Meetup Fun[ctional] spark with scalaMeetup Fun[ctional] spark with scala
Meetup Fun[ctional] spark with scala
 
Fun[ctional] spark with scala
Fun[ctional] spark with scalaFun[ctional] spark with scala
Fun[ctional] spark with scala
 
Herramientas BigData.pptx
Herramientas BigData.pptxHerramientas BigData.pptx
Herramientas BigData.pptx
 
Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010
 
Baño
BañoBaño
Baño
 
Resilient Distributed Dataset - Analisis paper
Resilient  Distributed Dataset - Analisis paper Resilient  Distributed Dataset - Analisis paper
Resilient Distributed Dataset - Analisis paper
 
Sistemas de gestión de base de datos
Sistemas de gestión de base de datosSistemas de gestión de base de datos
Sistemas de gestión de base de datos
 
Motor De Bases De Datos Oracle
Motor De Bases De Datos OracleMotor De Bases De Datos Oracle
Motor De Bases De Datos Oracle
 
Motor De Bases De Datos Oracle
Motor De Bases De Datos OracleMotor De Bases De Datos Oracle
Motor De Bases De Datos Oracle
 
Motor De Bases De Datos Oracle
Motor De Bases De Datos OracleMotor De Bases De Datos Oracle
Motor De Bases De Datos Oracle
 
ORACLE
ORACLEORACLE
ORACLE
 
GLUE (1).pdf
GLUE (1).pdfGLUE (1).pdf
GLUE (1).pdf
 
CSA - Office.com sobre SharePoint
CSA - Office.com sobre SharePointCSA - Office.com sobre SharePoint
CSA - Office.com sobre SharePoint
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
 
Scala en proyectos de vinculación Ancap-UR - 2013-03
Scala en proyectos de vinculación Ancap-UR - 2013-03Scala en proyectos de vinculación Ancap-UR - 2013-03
Scala en proyectos de vinculación Ancap-UR - 2013-03
 
Base de datos_-_material_didactico
Base de datos_-_material_didacticoBase de datos_-_material_didactico
Base de datos_-_material_didactico
 
Curso Swift
Curso SwiftCurso Swift
Curso Swift
 
EXPO PERL UTT
EXPO PERL UTTEXPO PERL UTT
EXPO PERL UTT
 
Primeros pasos con Spark - Spark Meetup Madrid 30-09-2014
Primeros pasos con Spark - Spark Meetup Madrid 30-09-2014Primeros pasos con Spark - Spark Meetup Madrid 30-09-2014
Primeros pasos con Spark - Spark Meetup Madrid 30-09-2014
 

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 massivo
Socialmetrix
 
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
Socialmetrix
 
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 Campaign
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 Analytics
Socialmetrix
 
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
 
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 Sociais
Socialmetrix
 
Call2Social
Call2SocialCall2Social
Call2Social
Socialmetrix
 
Redis
RedisRedis
Jugar Introduccion a Scala
Jugar Introduccion a ScalaJugar Introduccion a Scala
Jugar Introduccion a Scala
Socialmetrix
 
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
Socialmetrix
 
MongoDB, RabbitMQ y Applicaciones en Nube
MongoDB, RabbitMQ y Applicaciones en NubeMongoDB, RabbitMQ y Applicaciones en Nube
MongoDB, RabbitMQ y Applicaciones en Nube
Socialmetrix
 

Más de Socialmetrix (13)

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
 
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
 
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...
 
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

Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Telefónica
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
Fernando Villares
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
JimmyTejadaSalizar
 
Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
samuelvideos
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
raquelariza02
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
Luis Enrique Zafra Haro
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
DanielErazoMedina
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
DiegoCampos433849
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
rafaelsalazar0615
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
ValeriaAyala48
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
Leidyfuentes19
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
AlejandraCasallas7
 

Último (20)

Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
 
Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 

Tutorial en Apache Spark - Clasificando tweets en realtime

  • 1. Tutorial en Apache Spark Clasificando Tweets en Realtime Gustavo Arjones gustavo@socialmetrix.com @arjones
  • 2. AGENDA • Qué es Apache Spark? • Introducción a Scala • Crear un pipeline con Apache Spark (Word Count) • Cargar JSON de Tweets (Statuses) • Crear un programa que consume del stream (simulado) • Obtener los lenguajes de programación más hablados • Por usuario, por url, por localización
  • 3. Qué es Apache Spark?
  • 4. Qué es Spark? Apache Spark™ is a fast and general engine for large-scale data processing. • Procesamiento In-memory (preferentemente) • Framework de Procesamiento Unificado • Para Ingenieros & Data Scientists
  • 5. Principales Pilares Task Scheduler • Prepara los jobs a través de DAG (Directed acyclic graph) • Concatena funciones para ejecutar los stages • Cache-aware; considera utilización & localización de datos (data locality) • Partitioning-aware para reducir shuffles por la red RDD (Resilient Distributed Datasets) • Estructura de datos Inmutable (In-memory) • Tolerante a fallas (Se rearma en caso de falla) • Estructura de datos que puede ser operada en paralelo • Rica interfaz de Transformations & Actions
  • 8. DISCLAIMER Para que los ejercicios sean realizados dentro del tiempo establecido para el laboratorio los datasets son chicos. Las soluciones que desarrollamos acá pueden escalar para cientos de servidores y Terabytes de datos Las técnicas se aplican a mayor Volumen y Velocidad: Internet Of Things (IoT), Logs, games, mobile, etc
  • 10. Declarando Variables val à declara variables inmutables (final en Java)
  • 11. Declarando Función Crear una función que calcule el valor al cubo def à declara función scala> cube(10) res0: Int = 1000
  • 12. Usar MAP NOTA: Es una función, no la estructura de datos! Aplicar la función cube() a la lista de números myNumbers scala> myNumbers.map(cube(_)) scala> myNumbers.map(cube)
  • 13. Usar Map and Tuples Tuples son estructura auxiliares que permiten llevar multiplos valores sin necesidad de crear clases (VO) scala> myNumbers.map(n => (n, cube(n))) res1: List[(Int, Int)] = List((1,1), (2,8), (5,125), (4,64), (7,343), (3,27)) scala> myNumbers.map(n => (n, cube(n))).foreach(println) (1,1) (2,8) (5,125) (4,64) (7,343) (3,27)
  • 14. Usar Filter Aplicar Filter a la lista myNumbers dejando solo impares scala> myNumbers.filter(n => (n % 2) == 1) res6: List[Int] = List(1, 5, 7, 3) scala> myNumbers.filter(_ % 2 == 1) res6: List[Int] = List(1, 5, 7, 3)
  • 15. Usar Reduce Sumar todos los elementos de la lista scala> myNumbers.reduce((x, y) => x + y) res10: Int = 22 scala> myNumbers.reduce(_ + _)
  • 16. CHALLENGE Sumar todos los números pares en el rango de 0-99 TIP: scala> val numbers = Range(0, 100) numbers: scala.collection.immutable.Range = Range(0, 1, ..) scala> numbers.filter(_ % 2 == 0).reduce(_ + _) res2: Int = 2450
  • 17. Creando el primero pipeline con Apache Spark Código Fuente: https://github.com/socialmetrix/wisit14
  • 26. Apache Spark es Lazy! Viste que no pasó nada hasta la última linea? Nada es procesado entre Transformaciones. Solo se ejecuta cuando se realiza una Acción (top)
  • 27. API muy expresiva, mucho más operaciones! Ver: https://spark.apache.org/docs/latest/api/scala/#org.apache.spark.rdd.RDD
  • 28. CHALLENGE El resultado no es muy interesante, porque las principales palabras son stopwords, remueverlas para dar mayor significado
  • 30. Propuesta Crear un listado de los lenguajes más tweetados, similar al listado de lenguajes que crea Github http://adambard.com/blog/top-github-languages-2014/
  • 31. Consideraciones • Dataset contiene un JSON por linea (one-liner) • Hay que interpretar JSON • Pueden haber erroes en los JSON – Lineas vacias – Lineas malformadas / Diferentes schemas
  • 32.
  • 33. Obtener las TOP HASHTAGS (batch mode) Ver archivo ./src/main/scala/smx/sql/TopHashtags.scala Compilar y Ejecutar ./sbt/sbt assembly spark-submit --class smx.sql.TopHashtags target/scala-2.10/wisit2014-spark-assembly-0.0.1.jar data/tweets-20141126-sample.json
  • 34. Procesando tweets en Real-time
  • 35. Stream es una secuencia de RDD
  • 36. Streaming Ver archivos ./src/main/scala/smx/utils/SocketServer.scala Iniciar SocketServer (simula Twitter Streaming) java -cp target/scala-2.10/wisit2014-spark-assembly-0.0.1.jar smx.utils.SocketServer data/tweets-20141126-sample.json
  • 37. Streaming (cont.) Ver archivo ./src/main/scala/smx/stream/StreamProcessor.scala Iniciar Streaming Processor spark-submit --class smx.stream.StreamProcessor target/scala-2.10/wisit2014-spark-assembly-0.0.1.jar
  • 39. CHALLENGE Cambiar de Hashtags para TOP Usuarios TIP: El usuario es user.screen_name en el JSON
  • 40. Usando SparkStreaming con Twitter (necesita conexión de internet) Training Oficial 2014 Stream Processing with Spark Streaming https://databricks-training.s3.amazonaws.com/realtime-processing-with- spark-streaming.html
  • 42. Mucha documentación disponible https://spark.apache.org/documentation.html http://spark-summit.org/2014/training http://arjon.es/tag/spark/ http://www.slideshare.net/frodriguezolivera/apache-spark- 41601032 First Steps to Scala http://www.artima.com/scalazine/articles/steps.html http://shop.oreilly.com/ product/0636920028512.do
  • 43. Gracias & Obrigado! Gustavo Arjones gustavo@socialmetrix.com @arjones jobs@socialmetrix.com