SlideShare una empresa de Scribd logo
Introducción a Apache Spark
Análisis de Datos con R
Ing. Eduardo Castro, PhD
eduardo.castro@sqlpass.org
ecastrom@gmail.com
Referencias
▪ Using Apache Spark. Pat McDonough – Databricks
▪ Spark in the Hadoop Ecosystem. Eric Baldeschwieler
Apache Spark
spark.incubator.apache.org
github.com/ Apache / incubator-
spark
user@spark.incubator.apache.org
Apache Spark
Introducción a Spark
¿Qué es Spark?
▪ No es una versión modificada de Hadoop
▪ Independiente, rápido, MapReduce
▪ Almacenamiento en memoria para consultas iterativas muy rápidas
▪ Hasta 40x más rápido que Hadoop
▪ Compatible con el API Hadoop con respecto al almacenamiento
▪ Se puede leer / escribir en cualquier sistema soportado por Hadoop,
incluyendo HDFS, HBase,SequenceFiles,etc
Eficiente
• Almacenamiento en memoria
Utilizable
• API en Java, Scala, Python
• Shell Interactivo
Qué es Spark?
Fast and Expressive Cluster Computing System
Compatible con Apache Hadoop
Evolución de Spark
• 2008 - Yahoo! equipo de Hadoop inicia colaboración con laboratorio de
Berkeley Amp / Rad
• 2009 - Ejemplo de Spark construido para Nexus -> Mesos
• 2011 - "Spark está 2 años por delante de cualquier cosa en Google"
• 2012 - Yahoo! Trabaja con Spark / Shark
• Hoy - Muchas historias de éxito
Usuarios Spark
Actualizaciones Spark Hadoop
• Hardware ha mejorardo desde que Hadoop comenzó:
• Gran cantidad de RAM, redes más rápidas (10 Gb +)
• Ancho de banda de los discos no se manteniene al día
• MapReduce es incómodo para las cargas de trabajo:
Spark, "lengua franca?"
• Soporte para muchas técnicas de desarrollo
• SQL, Streaming, Graph & in memory, MapReduce
• Escriba "UDF" una vez y utilizar en todos los contextos
• Pequeño, sencillo y elegante API
• Fácil de aprender y utilizar; expresivo y extensible
• Retiene ventajas de MapReduce (tolerancia a fallos ...)
Conceptos
• Colecciones de objetos se propagan en un
cluster, almacenada en RAM o en Disco
• Construido a través de
transformaciones paralelas
• Automáticamente reconstruido en caso de falla
• Transformations (e.g.
map, filter, groupBy)
• Acciones
(e.g. count, collect, save)
Escribir programas en términos de transformaciones en
conjuntos de datos distribuido
Resilient Distributed Datasets Operationes
Intercambio de Datos en MapReduce
iter. 1 iter. 2 . . .
Entrada
HDFS
leer
HDFS
escribir
HDFS
leer
HDFS
escribir
Entrada
consulta 1
consulta 2
consulta 3
resultado 1
resultado 2
número 3
. . .
HDFS
leer
Lento debido a la replicación, la serialización, y el disco IO
iter. 1 iter. 2 . . .
Entrada
Intercambio de Datos en Spark
Repartido
memoria
Entrada
consulta 1
pregunta 2
consulta 3
. . .
una vez
tratamiento
10-100× más rápido que la red y el disco
Prueba de rendimiento de Sort
Hadoop MR
Record (2013)
Spark
Record (2014)
Data Size 102.5 TB 100 TB
Elapsed Time 72 mins 23 mins
# Nodes 2100 206
# Cores 50400 physical 6592 virtualized
Cluster disk
throughput
3150 GB/s
(est.)
618 GB/s
Network
dedicated data
center, 10Gbps
virtualized (EC2) 10Gbps
network
Sort rate 1.42 TB/min 4.27 TB/min
Sort rate/node 0.67 GB/min 20.7 GB/min
Sort benchmark, Daytona Gray: sort of 100 TB of data (1 trillion records)
http://databricks.com/blog/2014/11/05/spark-officially-sets-a-new-record-in-large-scale-
sorting.html
Spark, 3x
más rápido
1/10 de
nodos
Combina streaming y análisis
complejos
From single machines to distributed computingEscalar Spark en Cluster
Spark clusters in Azure HDInsightSpark en Azure y Blob Storage
Fuentes de datos
Spark con HDFS
Stack para aplicaciones
Spark dentro de Hortonworks
Interacción con Yarn
Programación en Spark
▪ Idea clave: conjuntos de datos distribuidos elásticos (DDR)
▪ Colecciones distribuidas de objetos que pueden ser
almacenadas en caché en la memoria a través de los
nodos del clúster
▪ Manipulada a través de diversos operadores paralelos
▪ Reconstruida automáticamente en caso de fallo
▪ Interfaz
▪ Lenguaje integrado Clean API Scala
▪ Puede ser usado interactivamente desde Scala
Trabajo con RDDs
RDD
RDD
RDD
RDD
Transformations
Action Value
linesWithSpark = textFile.filter(lambda line: "Spark” in line)
linesWithSpark.count()
74
linesWithSpark.first()
# Apache Spark
textFile = sc.textFile(”SomeFile.txt”)
DDR: Distribuidos
● Datos no tienen que estar en una misma máquina
● Los datos se separa en particiones
○ Si necesitamos podemos operar en nuestra partición de datos
al mismo tiempo
Trabajador
Worker
Worker
Driver
Block 1
Block 2
Block 3
Ejemplos: Log Mining
Cargar mensajes de error en memoria y buscar patrones
Worker
Worker
Worker
Driver
val lines = spark.textFile("hdfs://...")
Ejemplos: Log Mining
Worker
Worker
Worker
Driver
val lines = spark.textFile("hdfs://...")
Cargar mensajes de error en memoria y buscar
patrones
RDD Base
Ejemplos: Log Mining
Cargar mensajes de error en memoria y buscar patrones
val lines = spark.textFile("hdfs://...")
val errors = lines.filter(_.startsWith("ERROR"))
Worker
Worker
Worker
Driver
Ejemplos: Log Mining
val lines = spark.textFile("hdfs://...")
val errors = lines.filter(_.startsWith("ERROR"))
Worker
Worker
Worker
Driver
Cargar mensajes de error en memoria y buscar
patrones
RDD Transformado
Ejemplos: Log Mining
Cargar mensajes de error en memoria y buscar patrones
val lines = spark.textFile("hdfs://...")
val errors = lines.filter(_.startsWith("ERROR"))
val messages = errors.map(_.split('t´)(2))
Worker
Driver
messages.filter(_.contains("mysql")).count()
Worker
Worker
Ejemplos: Log Mining
Cargar mensajes de error en memoria y buscar patrones
val lines = spark.textFile("hdfs://...")
val errors = lines.filter(_.startsWith("ERROR"))
val messages = errors.map(_.split('t´)(2))
messages.cache()
Worker
Driver
messages.filter(_.contains("mysql")).count()
Worker
Worker
Poner RDD en cache
Ejemplos: Log Mining
Cargar mensajes de error en memoria y buscar patrones
val lines = spark.textFile("hdfs://...")
val errors = lines.filter(_.startsWith("ERROR"))
val messages = errors.map(_.split('t´)(2))
messages.cache()
Worker
Worker
Worker
Driver
messages.filter(_.contains("mysql")).count()
Acción
Ejemplos: Log Mining
Cargar mensajes de error en memoria y buscar patrones
val lines = spark.textFile("hdfs://...")
val errors = lines.filter(_.startsWith("ERROR"))
val messages = errors.map(_.split('t´)(2))
messages.cache()
Worker
Worker
Driver
messages.filter(_.contains("mysql")).count()
Worker
Block 1
Block 2
Block 3
Ejemplos: Log Mining
Cargar mensajes de error en memoria y buscar patrones
val lines = spark.textFile("hdfs://...")
val errors = lines.filter(_.startsWith("ERROR"))
val messages = errors.map(_.split('t´)(2))
messages.cache()
Worker
Worker
Worker
Block 1
Block 2
Block 3
Driver
tasks
tasks
messages.filter(_.contains("mysql")).count()
tasks
Ejemplos: Log Mining
Cargar mensajes de error en memoria y buscar patrones
val lines = spark.textFile("hdfs://...")
val errors = lines.filter(_.startsWith("ERROR"))
val messages = errors.map(_.split('t´)(2))
messages.cache()
Worker
Worker
messages.filter(_.contains("mysql")).count()
Worker
Block 1
Block 2
Block 3
Driver
Read
HDFS
Block
Read
HDFS
Block
Read
HDFS
Block
Ejemplos: Log Mining
Cargar mensajes de error en memoria y buscar patrones
val lines = spark.textFile("hdfs://...")
val errors = lines.filter(_.startsWith("ERROR"))
val messages = errors.map(_.split('t´)(2))
messages.cache()
Worker
Worker
Worker
messages.filter(_.contains("mysql")).count()
Block 1
Block 2
Block 3
Driver
Cache 1
Cache 2
Cache 3
Process
& Cache
Data
Process
& Cache
Data
Process
& Cache
Data
Ejemplos: Log Mining
Cargar mensajes de error en memoria y buscar patrones
val lines = spark.textFile("hdfs://...")
val errors = lines.filter(_.startsWith("ERROR"))
val messages = errors.map(_.split('t´)(2))
messages.cache()
Worker
Worker
Worker
messages.filter(_.contains("mysql")).count()
Block 1
Block 2
Block 3
Driver
Cache 1
Cache 2
Cache 3
results
results
results
Ejemplos: Log Mining
Cargar mensajes de error en memoria y buscar patrones
val lines = spark.textFile("hdfs://...")
val errors = lines.filter(_.startsWith("ERROR"))
val messages = errors.map(_.split('t´)(2))
messages.cache()
Worker
Worker
Worker
Block 1
Block 2
Block 3
Driver
Cache 1
Cache 2
Cache 3
messages.filter(_.contains("mysql")).count()
messages.filter(_.contains("php")).count()
Ejemplos: Log Mining
Cargar mensajes de error en memoria y buscar patrones
val lines = spark.textFile("hdfs://...")
val errors = lines.filter(_.startsWith("ERROR"))
val messages = errors.map(_.split('t´)(2))
messages.cache()
Worker
Worker
Worker
Block 1
Block 2
Block 3
Cache 1
Cache 2
Cache 3
messages.filter(_.contains("mysql")).count()
messages.filter(_.contains("php")).count()
tasks
tasks
tasks
Driver
Ejemplos: Log Mining
Cargar mensajes de error en memoria y buscar patrones
val lines = spark.textFile("hdfs://...")
val errors = lines.filter(_.startsWith("ERROR"))
val messages = errors.map(_.split('t´)(2))
messages.cache()
Worker
Worker
Worker
Block 1
Block 2
Block 3
Cache 1
Cache 2
Cache 3
messages.filter(_.contains("mysql")).count()
messages.filter(_.contains("php")).count()
Driver
Process
from
Cache
Process
from
Cache
Process
from
Cache
Ejemplos: Log Mining
Cargar mensajes de error en memoria y buscar patrones
val lines = spark.textFile("hdfs://...")
val errors = lines.filter(_.startsWith("ERROR"))
val messages = errors.map(_.split('t´)(2))
messages.cache()
Worker
Worker
Worker
Block 1
Block 2
Block 3
Cache 1
Cache 2
Cache 3
messages.filter(_.contains("mysql")).count()
messages.filter(_.contains("php")).count()
Driver
results
results
results
Ejemplos: Log Mining
Cargar mensajes de error en memoria y buscar patrones
val lines = spark.textFile("hdfs://...")
val errors = lines.filter(_.startsWith("ERROR"))
val messages = errors.map(_.split('t´)(2))
messages.cache()
Worker
Worker
Worker
Block 1
Block 2
Block 3
Cache 1
Cache 2
Cache 3
messages.filter(_.contains("mysql")).count()
messages.filter(_.contains("php")).count()
Driver
Poner datos en cache ³ Resultados más rápidos
1 TB de datos de log
• 5-7 sec desde cache vs. 170s desde disco
Interactive Shell
• Forma rápida de
Aprender Spark
• Disponible en
Python y Scala
• Se ejecuta como un
aplicación en una
existente Spark
Cluster ...
Administrative GUIs
H5P: // <Standalone Master>: 8080 (por
predeterminado)
Source: http://spark.rstudio.com/
• Instalación mediante devtools
• Carga datos en Spark DataFrames
desde: data frames locales de R, Hive
tables, CSV, JSON.
• Conectar al instancias locales de
Spark y Cluster Remotos de Spark
sparklyr: R interface para Apache Spark
dplyr and ML in sparklyr
• Incluye 3 familias de funciones para machine learning
• ml_*: Machine learning algorithms para analizar datos en el paquete spark.ml.
• K-Means, GLM, LR, Survival Regression, DT, RF, GBT, PCA, Naive-Bayes, Multilayer Perceptron
• ft_*: Feature transformers para manipulación de features individuales.
• sdf_*: Funciones para manipulación de SparkDataFrames.
• Provee un backend dplyr para manipulación, análisis y visualización
de datos
%>%
dplyr con ML en sparklyr
R Server: scale-out R, Enterprise
▪ 100% compatible con el open source R
▪ Se puede ejecutar en paralelo funciones R
▪ Ideal para parameter sweeps, simulation, scoring.
▪ Funciones distribuidas y escalables “rx” dentro del paquete
“RevoScaleR”.
▪ Transformaciones: rxDataStep()
▪ Estadísticas: rxSummary(), rxQuantile(), rxChiSquaredTest(), rxCrossTabs()…
▪ Algoritmos: rxLinMod(), rxLogit(), rxKmeans(), rxBTrees(), rxDForest()…
▪ Paralelismo: rxSetComputeContext()
Deep Learning con Spark
Deep Learning con Spark
R Server Hadoop
Architecturehitecture
R R R R
R
R R R R
R
Microsoft R Server
Proceso R Maestro en Edge Node
Apache YARN con Spark
Proceso R Worker R en Data Nodes
Datos en almacenamiento distribuido
Procesos R en Edge Node
Limpiar datos con SparkR dentro de
R Server
Train, Score, Evaluate por medio del
R Server
Publicar el Web Service desde R
TRABAJO CON SPARK
Anexos
Uso del Shell
Modes:
MASTER=local ./spark-shell
MASTER=local[2] ./spark-shell
# local, 1
# local, 2
thread
threads
MASTER=spark://host:port ./spark-shell # cluster
Launching:
spark-shell
pyspark (IPYTHON=1)
Creación de RDDs
# Load text file from local FS, HDFS, or S3
> sc.textFile(“file.txt”)
> sc.textFile(“directory/*.txt”)
> sc.textFile(“hdfs://namenode:9000/path/file”)
# Use existing Hadoop InputFormat (Java/Scala only)
> sc.hadoopFile(keyClass, valClass, inputFmt, conf)
# Turn a Python collection into an RDD
> sc.parallelize([1, 2, 3])
Transformaciones básicas
> nums = sc.parallelize([1, 2, 3])
# Pass each element through a function
> squares = nums.map(lambda x: x*x) // {1, 4, 9}
zero or more others# Map each element to
> nums.flatMap(lambda
> # => {0, 0, 1, 0, 1,
x: => range(x))
2}
Range object (sequence
of numbers 0, 1, …, x-‐1)
# Keep elements passing a predicate
> even = squares.filter(lambda x: x % 2 == 0) // {4}
Acciones base
> nums = sc.parallelize([1, 2, 3])
# Retrieve RDD contents as
> nums.collect() # => [1,
a local collection
2, 3]
# Count number of elements
> nums.count() # => 3
# Merge elements with function
> nums.reduce(lambda
an associative
x, y: x + y) # => 6
# Write elements to a text file
> nums.saveAsTextFile(“hdfs://file.txt”)
# Return first K elements
> nums.take(2) # => [1, 2]
Trabajo con Key-Value Pairs
Spark’s “distributed reduce” transformaciones para
operar sobre RDDs de key-value pairs
Python: pair = (a, b)
pair[0] # => a
pair[1] # => b
Scala: val pair = (a, b)
pair._1 // => a
pair._2 // => b
Java: Tuple2 pair = new Tuple2(a, b);
pair._1 // => a
pair._2 // => b
Operaciones Key-Value
> pets = sc.parallelize(
[(“cat”, 1), (“dog”, 1), (“cat”, 2)])
> pets.sortByKey() # => {(cat, 1), (cat, 2), (dog, 1)}
reduceByKey implementa combinadores del
map
> pets.reduceByKey(lambda x, y:
# => {(cat,
x +
3),
y)
(dog, 1)}
> pets.groupByKey() # => {(cat, [1, 2]), (dog, [1])}
> lines = sc.textFile(“hamlet.txt”)
> counts = lines.flatMap(lambda line: line.split(“ ”))
.map(lambda word => (word, 1))
.reduceByKey(lambda x, y: x + y)
Ejemplo: Word Count
“not to be” “to”
“be”
(to, 1)
(be, 1)
(be, 2)
(not, 1)
(or,1)
(to, 2)
“to be or”
“to”
“be”
(to, 1)
(be, 1)
“or” (or,1)
“not” (not, 1)
Key-Value Operaciones Adiconales
> visits = sc.parallelize([ (“index.html”,
(“about.html”,
(“index.html”,
“1.2.3.4”),
“3.4.5.6”),
“1.3.3.1”) ])
> pageNames = sc.parallelize([ (“index.html”,
(“about.html”,
“Home”),
“About”) ])
>
visits.join(pageNames
)
> visits.cogroup(pageNames)
# (“index.html”, ([“1.2.3.4”, “1.3.3.1”],
[“Home”]))
# (“about.html”, ([“3.4.5.6”], [“About”]))
#
#
(“index.html”,
(“index.html”,
(“1.2.3.4”,
(“1.3.3.1”,
“Home”))
“Home”))
# (“about.html”, (“3.4.5.6”, “About”))
Establecer el nivel de paralelistmo
Todas las operaciones RDD tienen un
parámetros para establecer la cantidad de
tareas
y: x + y, 5)> words.reduceByKey(lambda x,
> words.groupByKey(5)
> visits.join(pageViews, 5)
Ajuste de la Nivel de Paralelismo
Todos la par RDD operaciones tomar una
opcional segundo parámetro para número
de tareas
y: x + y, 5)>palabras.reduceByKey(lambda
X,
> palabras.groupByKey(5)
>visitas.unirse(Páginas
vistas, 5)
RDD Operadores Adicionales
• map
• filter
• groupBy
• sort
• union
• join
• leftOuterJoin
• rightOuterJoin
• reduce
• count
• fold
• reduceByKey
• groupByKey
• cogroup
• cross
• zip
sample
take
first
partitionBy
mapWith
pipe
save ...

Más contenido relacionado

La actualidad más candente

Engineering Fast Indexes for Big-Data Applications: Spark Summit East talk by...
Engineering Fast Indexes for Big-Data Applications: Spark Summit East talk by...Engineering Fast Indexes for Big-Data Applications: Spark Summit East talk by...
Engineering Fast Indexes for Big-Data Applications: Spark Summit East talk by...
Spark Summit
 
The Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization OpportunitiesThe Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization Opportunities
Databricks
 
Exemplos de User Stories
Exemplos de User StoriesExemplos de User Stories
Exemplos de User Stories
Manoel Pimentel Medeiros
 
Deep Dive: Memory Management in Apache Spark
Deep Dive: Memory Management in Apache SparkDeep Dive: Memory Management in Apache Spark
Deep Dive: Memory Management in Apache Spark
Databricks
 
Введение в машинное обучение
Введение в машинное обучениеВведение в машинное обучение
Введение в машинное обучение
Grigory Sapunov
 
Metricas ageis
Metricas ageisMetricas ageis
RAPIDS cuGraph – Accelerating all your Graph needs
RAPIDS cuGraph – Accelerating all your Graph needsRAPIDS cuGraph – Accelerating all your Graph needs
RAPIDS cuGraph – Accelerating all your Graph needs
Connected Data World
 
Deep Dive into the New Features of Apache Spark 3.0
Deep Dive into the New Features of Apache Spark 3.0Deep Dive into the New Features of Apache Spark 3.0
Deep Dive into the New Features of Apache Spark 3.0
Databricks
 
Apache Spark in Depth: Core Concepts, Architecture & Internals
Apache Spark in Depth: Core Concepts, Architecture & InternalsApache Spark in Depth: Core Concepts, Architecture & Internals
Apache Spark in Depth: Core Concepts, Architecture & Internals
Anton Kirillov
 
Paradigmas de Procesamiento en Big Data: Arquitecturas y Tecnologías aplicadas
Paradigmas de Procesamiento en Big Data: Arquitecturas y Tecnologías aplicadasParadigmas de Procesamiento en Big Data: Arquitecturas y Tecnologías aplicadas
Paradigmas de Procesamiento en Big Data: Arquitecturas y Tecnologías aplicadas
Big-Data-Summit
 
Deep Dive into GPU Support in Apache Spark 3.x
Deep Dive into GPU Support in Apache Spark 3.xDeep Dive into GPU Support in Apache Spark 3.x
Deep Dive into GPU Support in Apache Spark 3.x
Databricks
 
The Apache Spark File Format Ecosystem
The Apache Spark File Format EcosystemThe Apache Spark File Format Ecosystem
The Apache Spark File Format Ecosystem
Databricks
 
Hadoop File system (HDFS)
Hadoop File system (HDFS)Hadoop File system (HDFS)
Hadoop File system (HDFS)
Prashant Gupta
 
Integration of HIve and HBase
Integration of HIve and HBaseIntegration of HIve and HBase
Integration of HIve and HBaseHortonworks
 
ClickHouse in Real Life. Case Studies and Best Practices, by Alexander Zaitsev
ClickHouse in Real Life. Case Studies and Best Practices, by Alexander ZaitsevClickHouse in Real Life. Case Studies and Best Practices, by Alexander Zaitsev
ClickHouse in Real Life. Case Studies and Best Practices, by Alexander Zaitsev
Altinity Ltd
 
Apache Spark for Cyber Security in an Enterprise Company
Apache Spark for Cyber Security in an Enterprise CompanyApache Spark for Cyber Security in an Enterprise Company
Apache Spark for Cyber Security in an Enterprise Company
Databricks
 
Cost-Based Optimizer in Apache Spark 2.2
Cost-Based Optimizer in Apache Spark 2.2 Cost-Based Optimizer in Apache Spark 2.2
Cost-Based Optimizer in Apache Spark 2.2
Databricks
 
Introdução de Kanban para Equipes Scrum
Introdução de Kanban para Equipes ScrumIntrodução de Kanban para Equipes Scrum
Introdução de Kanban para Equipes Scrum
Camilo Almendra
 
Feature drift monitoring as a service for machine learning models at scale
Feature drift monitoring as a service for machine learning models at scaleFeature drift monitoring as a service for machine learning models at scale
Feature drift monitoring as a service for machine learning models at scale
Noriaki Tatsumi
 
Hadoop online training
Hadoop online training Hadoop online training
Hadoop online training
Keylabs
 

La actualidad más candente (20)

Engineering Fast Indexes for Big-Data Applications: Spark Summit East talk by...
Engineering Fast Indexes for Big-Data Applications: Spark Summit East talk by...Engineering Fast Indexes for Big-Data Applications: Spark Summit East talk by...
Engineering Fast Indexes for Big-Data Applications: Spark Summit East talk by...
 
The Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization OpportunitiesThe Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization Opportunities
 
Exemplos de User Stories
Exemplos de User StoriesExemplos de User Stories
Exemplos de User Stories
 
Deep Dive: Memory Management in Apache Spark
Deep Dive: Memory Management in Apache SparkDeep Dive: Memory Management in Apache Spark
Deep Dive: Memory Management in Apache Spark
 
Введение в машинное обучение
Введение в машинное обучениеВведение в машинное обучение
Введение в машинное обучение
 
Metricas ageis
Metricas ageisMetricas ageis
Metricas ageis
 
RAPIDS cuGraph – Accelerating all your Graph needs
RAPIDS cuGraph – Accelerating all your Graph needsRAPIDS cuGraph – Accelerating all your Graph needs
RAPIDS cuGraph – Accelerating all your Graph needs
 
Deep Dive into the New Features of Apache Spark 3.0
Deep Dive into the New Features of Apache Spark 3.0Deep Dive into the New Features of Apache Spark 3.0
Deep Dive into the New Features of Apache Spark 3.0
 
Apache Spark in Depth: Core Concepts, Architecture & Internals
Apache Spark in Depth: Core Concepts, Architecture & InternalsApache Spark in Depth: Core Concepts, Architecture & Internals
Apache Spark in Depth: Core Concepts, Architecture & Internals
 
Paradigmas de Procesamiento en Big Data: Arquitecturas y Tecnologías aplicadas
Paradigmas de Procesamiento en Big Data: Arquitecturas y Tecnologías aplicadasParadigmas de Procesamiento en Big Data: Arquitecturas y Tecnologías aplicadas
Paradigmas de Procesamiento en Big Data: Arquitecturas y Tecnologías aplicadas
 
Deep Dive into GPU Support in Apache Spark 3.x
Deep Dive into GPU Support in Apache Spark 3.xDeep Dive into GPU Support in Apache Spark 3.x
Deep Dive into GPU Support in Apache Spark 3.x
 
The Apache Spark File Format Ecosystem
The Apache Spark File Format EcosystemThe Apache Spark File Format Ecosystem
The Apache Spark File Format Ecosystem
 
Hadoop File system (HDFS)
Hadoop File system (HDFS)Hadoop File system (HDFS)
Hadoop File system (HDFS)
 
Integration of HIve and HBase
Integration of HIve and HBaseIntegration of HIve and HBase
Integration of HIve and HBase
 
ClickHouse in Real Life. Case Studies and Best Practices, by Alexander Zaitsev
ClickHouse in Real Life. Case Studies and Best Practices, by Alexander ZaitsevClickHouse in Real Life. Case Studies and Best Practices, by Alexander Zaitsev
ClickHouse in Real Life. Case Studies and Best Practices, by Alexander Zaitsev
 
Apache Spark for Cyber Security in an Enterprise Company
Apache Spark for Cyber Security in an Enterprise CompanyApache Spark for Cyber Security in an Enterprise Company
Apache Spark for Cyber Security in an Enterprise Company
 
Cost-Based Optimizer in Apache Spark 2.2
Cost-Based Optimizer in Apache Spark 2.2 Cost-Based Optimizer in Apache Spark 2.2
Cost-Based Optimizer in Apache Spark 2.2
 
Introdução de Kanban para Equipes Scrum
Introdução de Kanban para Equipes ScrumIntrodução de Kanban para Equipes Scrum
Introdução de Kanban para Equipes Scrum
 
Feature drift monitoring as a service for machine learning models at scale
Feature drift monitoring as a service for machine learning models at scaleFeature drift monitoring as a service for machine learning models at scale
Feature drift monitoring as a service for machine learning models at scale
 
Hadoop online training
Hadoop online training Hadoop online training
Hadoop online training
 

Destacado

Vistazo a lo nuevo en SQL Server 2016
Vistazo a lo nuevo en SQL Server 2016Vistazo a lo nuevo en SQL Server 2016
Vistazo a lo nuevo en SQL Server 2016
Eduardo Castro
 
Azure sql database escalabilidad
Azure sql database escalabilidadAzure sql database escalabilidad
Azure sql database escalabilidad
Eduardo Castro
 
Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos
Eduardo Castro
 
Consideraciones de memoria sql server hardware
Consideraciones de memoria sql server hardwareConsideraciones de memoria sql server hardware
Consideraciones de memoria sql server hardware
Eduardo Castro
 
MVC: La Vista
MVC: La VistaMVC: La Vista
MVC: La Vista
Yesith Valencia
 
SQL Server 2016 Tablas en Memoria
SQL Server 2016 Tablas en MemoriaSQL Server 2016 Tablas en Memoria
SQL Server 2016 Tablas en Memoria
Eduardo Castro
 
SQL 2016 Column Store Index
SQL 2016 Column Store IndexSQL 2016 Column Store Index
SQL 2016 Column Store Index
Eduardo Castro
 
PowerQueryy el Lenguaje M
PowerQueryy el Lenguaje MPowerQueryy el Lenguaje M
PowerQueryy el Lenguaje M
SpanishPASSVC
 
Smart Grid Big Data e IoT
Smart Grid Big Data e IoTSmart Grid Big Data e IoT
Smart Grid Big Data e IoT
Eduardo Castro
 
Servicios cognitivos y su integración
Servicios cognitivos y su integraciónServicios cognitivos y su integración
Servicios cognitivos y su integración
Eduardo Castro
 
SQL Server Query Processor
SQL Server Query ProcessorSQL Server Query Processor
SQL Server Query Processor
Eduardo Castro
 
Consideraciones de sql server hardware
Consideraciones de sql server hardwareConsideraciones de sql server hardware
Consideraciones de sql server hardware
Eduardo Castro
 
Consideraciones de discos sql server hardware
Consideraciones de discos sql server hardwareConsideraciones de discos sql server hardware
Consideraciones de discos sql server hardware
Eduardo Castro
 
Introduccion a SQL Server 2016 Stretch Databases
Introduccion a SQL Server 2016 Stretch DatabasesIntroduccion a SQL Server 2016 Stretch Databases
Introduccion a SQL Server 2016 Stretch Databases
Eduardo Castro
 
SQL Server 2016 Reporting Services
SQL Server 2016 Reporting ServicesSQL Server 2016 Reporting Services
SQL Server 2016 Reporting Services
Eduardo Castro
 
Microsoft R Server
Microsoft R ServerMicrosoft R Server
Microsoft R Server
Eduardo Castro
 
Servicios cognitivos y su integración
Servicios cognitivos y su integraciónServicios cognitivos y su integración
Servicios cognitivos y su integración
Eduardo Castro
 
Cuadros de mando de BI con SQL Server
Cuadros de mando de BI con SQL ServerCuadros de mando de BI con SQL Server
Cuadros de mando de BI con SQL ServerEduardo Castro
 
Microsoft R Server
Microsoft R ServerMicrosoft R Server
Microsoft R Server
Eduardo Castro
 
Introduccion a Big Data stack
Introduccion a Big Data stackIntroduccion a Big Data stack
Introduccion a Big Data stack
Eduardo Castro
 

Destacado (20)

Vistazo a lo nuevo en SQL Server 2016
Vistazo a lo nuevo en SQL Server 2016Vistazo a lo nuevo en SQL Server 2016
Vistazo a lo nuevo en SQL Server 2016
 
Azure sql database escalabilidad
Azure sql database escalabilidadAzure sql database escalabilidad
Azure sql database escalabilidad
 
Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos
 
Consideraciones de memoria sql server hardware
Consideraciones de memoria sql server hardwareConsideraciones de memoria sql server hardware
Consideraciones de memoria sql server hardware
 
MVC: La Vista
MVC: La VistaMVC: La Vista
MVC: La Vista
 
SQL Server 2016 Tablas en Memoria
SQL Server 2016 Tablas en MemoriaSQL Server 2016 Tablas en Memoria
SQL Server 2016 Tablas en Memoria
 
SQL 2016 Column Store Index
SQL 2016 Column Store IndexSQL 2016 Column Store Index
SQL 2016 Column Store Index
 
PowerQueryy el Lenguaje M
PowerQueryy el Lenguaje MPowerQueryy el Lenguaje M
PowerQueryy el Lenguaje M
 
Smart Grid Big Data e IoT
Smart Grid Big Data e IoTSmart Grid Big Data e IoT
Smart Grid Big Data e IoT
 
Servicios cognitivos y su integración
Servicios cognitivos y su integraciónServicios cognitivos y su integración
Servicios cognitivos y su integración
 
SQL Server Query Processor
SQL Server Query ProcessorSQL Server Query Processor
SQL Server Query Processor
 
Consideraciones de sql server hardware
Consideraciones de sql server hardwareConsideraciones de sql server hardware
Consideraciones de sql server hardware
 
Consideraciones de discos sql server hardware
Consideraciones de discos sql server hardwareConsideraciones de discos sql server hardware
Consideraciones de discos sql server hardware
 
Introduccion a SQL Server 2016 Stretch Databases
Introduccion a SQL Server 2016 Stretch DatabasesIntroduccion a SQL Server 2016 Stretch Databases
Introduccion a SQL Server 2016 Stretch Databases
 
SQL Server 2016 Reporting Services
SQL Server 2016 Reporting ServicesSQL Server 2016 Reporting Services
SQL Server 2016 Reporting Services
 
Microsoft R Server
Microsoft R ServerMicrosoft R Server
Microsoft R Server
 
Servicios cognitivos y su integración
Servicios cognitivos y su integraciónServicios cognitivos y su integración
Servicios cognitivos y su integración
 
Cuadros de mando de BI con SQL Server
Cuadros de mando de BI con SQL ServerCuadros de mando de BI con SQL Server
Cuadros de mando de BI con SQL Server
 
Microsoft R Server
Microsoft R ServerMicrosoft R Server
Microsoft R Server
 
Introduccion a Big Data stack
Introduccion a Big Data stackIntroduccion a Big Data stack
Introduccion a Big Data stack
 

Similar a Análisis de datos con Apache Spark

Spark
SparkSpark
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
 
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
Socialmetrix
 
3. Hadoop
3.  Hadoop3.  Hadoop
Computación distribuida usando Python
Computación distribuida usando PythonComputación distribuida usando Python
Computación distribuida usando Python
Jose Manuel Ortega Candel
 
Spark Hands-on
Spark Hands-onSpark Hands-on
Spark Hands-on
Gaspar Muñoz Soria
 
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
 
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
 
Primeros pasos con Apache Spark - Madrid Meetup
Primeros pasos con Apache Spark - Madrid MeetupPrimeros pasos con Apache Spark - Madrid Meetup
Primeros pasos con Apache Spark - Madrid Meetup
dhiguero
 
Clase Hadoop
Clase HadoopClase Hadoop
Clase Hadoop
JorgeAntonioCabreraG2
 
Generalidades de manejo de logs
Generalidades de manejo de logsGeneralidades de manejo de logs
Generalidades de manejo de logs
Marvin Xuya
 
Why Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén CasadoWhy Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén Casado
Big Data Spain
 
Foro de Arquitectos: caché en azure a fondo
Foro de Arquitectos: caché en azure a fondoForo de Arquitectos: caché en azure a fondo
Foro de Arquitectos: caché en azure a fondo
Fernando Escolar Martínez-Berganza
 
Sysmana 2017 monitorización de logs con el stack elk
Sysmana 2017   monitorización de logs con el stack elkSysmana 2017   monitorización de logs con el stack elk
Sysmana 2017 monitorización de logs con el stack elk
José Ignacio Álvarez Ruiz
 
Intro cassandra
Intro cassandraIntro cassandra
Intro cassandra
William Yánez
 
Performance en Drupal 7
Performance en Drupal 7Performance en Drupal 7
Performance en Drupal 7
Karim Boudjema Schombourg
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magento
Onestic
 
Spark: una chispa con la velocidad del rayo ¿el sustituto de Hadoop?
Spark: una chispa con la velocidad del rayo  ¿el sustituto de Hadoop?Spark: una chispa con la velocidad del rayo  ¿el sustituto de Hadoop?
Spark: una chispa con la velocidad del rayo ¿el sustituto de Hadoop?
Fernando Alfonso Casas De la Torre
 
Congreso Academy Journal Celaya 2017
Congreso Academy Journal Celaya 2017Congreso Academy Journal Celaya 2017
Congreso Academy Journal Celaya 2017
Fernando Alfonso Casas De la Torre
 

Similar a Análisis de datos con Apache Spark (20)

Spark
SparkSpark
Spark
 
Resilient Distributed Dataset - Analisis paper
Resilient  Distributed Dataset - Analisis paper Resilient  Distributed Dataset - Analisis paper
Resilient Distributed Dataset - Analisis paper
 
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
 
3. Hadoop
3.  Hadoop3.  Hadoop
3. Hadoop
 
Parallel Programming
Parallel ProgrammingParallel Programming
Parallel Programming
 
Computación distribuida usando Python
Computación distribuida usando PythonComputación distribuida usando Python
Computación distribuida usando Python
 
Spark Hands-on
Spark Hands-onSpark Hands-on
Spark Hands-on
 
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
 
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
 
Primeros pasos con Apache Spark - Madrid Meetup
Primeros pasos con Apache Spark - Madrid MeetupPrimeros pasos con Apache Spark - Madrid Meetup
Primeros pasos con Apache Spark - Madrid Meetup
 
Clase Hadoop
Clase HadoopClase Hadoop
Clase Hadoop
 
Generalidades de manejo de logs
Generalidades de manejo de logsGeneralidades de manejo de logs
Generalidades de manejo de logs
 
Why Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén CasadoWhy Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén Casado
 
Foro de Arquitectos: caché en azure a fondo
Foro de Arquitectos: caché en azure a fondoForo de Arquitectos: caché en azure a fondo
Foro de Arquitectos: caché en azure a fondo
 
Sysmana 2017 monitorización de logs con el stack elk
Sysmana 2017   monitorización de logs con el stack elkSysmana 2017   monitorización de logs con el stack elk
Sysmana 2017 monitorización de logs con el stack elk
 
Intro cassandra
Intro cassandraIntro cassandra
Intro cassandra
 
Performance en Drupal 7
Performance en Drupal 7Performance en Drupal 7
Performance en Drupal 7
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magento
 
Spark: una chispa con la velocidad del rayo ¿el sustituto de Hadoop?
Spark: una chispa con la velocidad del rayo  ¿el sustituto de Hadoop?Spark: una chispa con la velocidad del rayo  ¿el sustituto de Hadoop?
Spark: una chispa con la velocidad del rayo ¿el sustituto de Hadoop?
 
Congreso Academy Journal Celaya 2017
Congreso Academy Journal Celaya 2017Congreso Academy Journal Celaya 2017
Congreso Academy Journal Celaya 2017
 

Más de Eduardo Castro

Introducción a polybase en SQL Server
Introducción a polybase en SQL ServerIntroducción a polybase en SQL Server
Introducción a polybase en SQL Server
Eduardo Castro
 
Creando tu primer ambiente de AI en Azure ML y SQL Server
Creando tu primer ambiente de AI en Azure ML y SQL ServerCreando tu primer ambiente de AI en Azure ML y SQL Server
Creando tu primer ambiente de AI en Azure ML y SQL Server
Eduardo Castro
 
Seguridad en SQL Azure
Seguridad en SQL AzureSeguridad en SQL Azure
Seguridad en SQL Azure
Eduardo Castro
 
Azure Synapse Analytics MLflow
Azure Synapse Analytics MLflowAzure Synapse Analytics MLflow
Azure Synapse Analytics MLflow
Eduardo Castro
 
SQL Server 2019 con Windows Server 2022
SQL Server 2019 con Windows Server 2022SQL Server 2019 con Windows Server 2022
SQL Server 2019 con Windows Server 2022
Eduardo Castro
 
Novedades en SQL Server 2022
Novedades en SQL Server 2022Novedades en SQL Server 2022
Novedades en SQL Server 2022
Eduardo Castro
 
Introduccion a SQL Server 2022
Introduccion a SQL Server 2022Introduccion a SQL Server 2022
Introduccion a SQL Server 2022
Eduardo Castro
 
Machine Learning con Azure Managed Instance
Machine Learning con Azure Managed InstanceMachine Learning con Azure Managed Instance
Machine Learning con Azure Managed Instance
Eduardo Castro
 
Novedades en sql server 2022
Novedades en sql server 2022Novedades en sql server 2022
Novedades en sql server 2022
Eduardo Castro
 
Sql server 2019 con windows server 2022
Sql server 2019 con windows server 2022Sql server 2019 con windows server 2022
Sql server 2019 con windows server 2022
Eduardo Castro
 
Introduccion a databricks
Introduccion a databricksIntroduccion a databricks
Introduccion a databricks
Eduardo Castro
 
Pronosticos con sql server
Pronosticos con sql serverPronosticos con sql server
Pronosticos con sql server
Eduardo Castro
 
Data warehouse con azure synapse analytics
Data warehouse con azure synapse analyticsData warehouse con azure synapse analytics
Data warehouse con azure synapse analytics
Eduardo Castro
 
Que hay de nuevo en el Azure Data Lake Storage Gen2
Que hay de nuevo en el Azure Data Lake Storage Gen2Que hay de nuevo en el Azure Data Lake Storage Gen2
Que hay de nuevo en el Azure Data Lake Storage Gen2
Eduardo Castro
 
Introduccion a Azure Synapse Analytics
Introduccion a Azure Synapse AnalyticsIntroduccion a Azure Synapse Analytics
Introduccion a Azure Synapse Analytics
Eduardo Castro
 
Seguridad de SQL Database en Azure
Seguridad de SQL Database en AzureSeguridad de SQL Database en Azure
Seguridad de SQL Database en Azure
Eduardo Castro
 
Python dentro de SQL Server
Python dentro de SQL ServerPython dentro de SQL Server
Python dentro de SQL Server
Eduardo Castro
 
Servicios Cognitivos de de Microsoft
Servicios Cognitivos de de Microsoft Servicios Cognitivos de de Microsoft
Servicios Cognitivos de de Microsoft
Eduardo Castro
 
Script de paso a paso de configuración de Secure Enclaves
Script de paso a paso de configuración de Secure EnclavesScript de paso a paso de configuración de Secure Enclaves
Script de paso a paso de configuración de Secure Enclaves
Eduardo Castro
 
Introducción a conceptos de SQL Server Secure Enclaves
Introducción a conceptos de SQL Server Secure EnclavesIntroducción a conceptos de SQL Server Secure Enclaves
Introducción a conceptos de SQL Server Secure Enclaves
Eduardo Castro
 

Más de Eduardo Castro (20)

Introducción a polybase en SQL Server
Introducción a polybase en SQL ServerIntroducción a polybase en SQL Server
Introducción a polybase en SQL Server
 
Creando tu primer ambiente de AI en Azure ML y SQL Server
Creando tu primer ambiente de AI en Azure ML y SQL ServerCreando tu primer ambiente de AI en Azure ML y SQL Server
Creando tu primer ambiente de AI en Azure ML y SQL Server
 
Seguridad en SQL Azure
Seguridad en SQL AzureSeguridad en SQL Azure
Seguridad en SQL Azure
 
Azure Synapse Analytics MLflow
Azure Synapse Analytics MLflowAzure Synapse Analytics MLflow
Azure Synapse Analytics MLflow
 
SQL Server 2019 con Windows Server 2022
SQL Server 2019 con Windows Server 2022SQL Server 2019 con Windows Server 2022
SQL Server 2019 con Windows Server 2022
 
Novedades en SQL Server 2022
Novedades en SQL Server 2022Novedades en SQL Server 2022
Novedades en SQL Server 2022
 
Introduccion a SQL Server 2022
Introduccion a SQL Server 2022Introduccion a SQL Server 2022
Introduccion a SQL Server 2022
 
Machine Learning con Azure Managed Instance
Machine Learning con Azure Managed InstanceMachine Learning con Azure Managed Instance
Machine Learning con Azure Managed Instance
 
Novedades en sql server 2022
Novedades en sql server 2022Novedades en sql server 2022
Novedades en sql server 2022
 
Sql server 2019 con windows server 2022
Sql server 2019 con windows server 2022Sql server 2019 con windows server 2022
Sql server 2019 con windows server 2022
 
Introduccion a databricks
Introduccion a databricksIntroduccion a databricks
Introduccion a databricks
 
Pronosticos con sql server
Pronosticos con sql serverPronosticos con sql server
Pronosticos con sql server
 
Data warehouse con azure synapse analytics
Data warehouse con azure synapse analyticsData warehouse con azure synapse analytics
Data warehouse con azure synapse analytics
 
Que hay de nuevo en el Azure Data Lake Storage Gen2
Que hay de nuevo en el Azure Data Lake Storage Gen2Que hay de nuevo en el Azure Data Lake Storage Gen2
Que hay de nuevo en el Azure Data Lake Storage Gen2
 
Introduccion a Azure Synapse Analytics
Introduccion a Azure Synapse AnalyticsIntroduccion a Azure Synapse Analytics
Introduccion a Azure Synapse Analytics
 
Seguridad de SQL Database en Azure
Seguridad de SQL Database en AzureSeguridad de SQL Database en Azure
Seguridad de SQL Database en Azure
 
Python dentro de SQL Server
Python dentro de SQL ServerPython dentro de SQL Server
Python dentro de SQL Server
 
Servicios Cognitivos de de Microsoft
Servicios Cognitivos de de Microsoft Servicios Cognitivos de de Microsoft
Servicios Cognitivos de de Microsoft
 
Script de paso a paso de configuración de Secure Enclaves
Script de paso a paso de configuración de Secure EnclavesScript de paso a paso de configuración de Secure Enclaves
Script de paso a paso de configuración de Secure Enclaves
 
Introducción a conceptos de SQL Server Secure Enclaves
Introducción a conceptos de SQL Server Secure EnclavesIntroducción a conceptos de SQL Server Secure Enclaves
Introducción a conceptos de SQL Server Secure Enclaves
 

Último

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
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
AlejandraCasallas7
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
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
 
(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
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 
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
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
sarasofiamontezuma
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
AlejandraCasallas7
 
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
 
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
 
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
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
espinozaernesto427
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
Ing. Julio Iván Mera Casas
 
Í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
 
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
 
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
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
ManuelCampos464987
 
Ventajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloroVentajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloro
durangense277
 

Último (20)

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
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
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
 
(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
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.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
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
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
 
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
 
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
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
 
Í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...
 
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
 
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
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
Ventajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloroVentajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloro
 

Análisis de datos con Apache Spark

  • 1. Introducción a Apache Spark Análisis de Datos con R Ing. Eduardo Castro, PhD eduardo.castro@sqlpass.org ecastrom@gmail.com
  • 2. Referencias ▪ Using Apache Spark. Pat McDonough – Databricks ▪ Spark in the Hadoop Ecosystem. Eric Baldeschwieler
  • 3. Apache Spark spark.incubator.apache.org github.com/ Apache / incubator- spark user@spark.incubator.apache.org
  • 6. ¿Qué es Spark? ▪ No es una versión modificada de Hadoop ▪ Independiente, rápido, MapReduce ▪ Almacenamiento en memoria para consultas iterativas muy rápidas ▪ Hasta 40x más rápido que Hadoop ▪ Compatible con el API Hadoop con respecto al almacenamiento ▪ Se puede leer / escribir en cualquier sistema soportado por Hadoop, incluyendo HDFS, HBase,SequenceFiles,etc
  • 7. Eficiente • Almacenamiento en memoria Utilizable • API en Java, Scala, Python • Shell Interactivo Qué es Spark? Fast and Expressive Cluster Computing System Compatible con Apache Hadoop
  • 8. Evolución de Spark • 2008 - Yahoo! equipo de Hadoop inicia colaboración con laboratorio de Berkeley Amp / Rad • 2009 - Ejemplo de Spark construido para Nexus -> Mesos • 2011 - "Spark está 2 años por delante de cualquier cosa en Google" • 2012 - Yahoo! Trabaja con Spark / Shark • Hoy - Muchas historias de éxito
  • 10. Actualizaciones Spark Hadoop • Hardware ha mejorardo desde que Hadoop comenzó: • Gran cantidad de RAM, redes más rápidas (10 Gb +) • Ancho de banda de los discos no se manteniene al día • MapReduce es incómodo para las cargas de trabajo:
  • 11. Spark, "lengua franca?" • Soporte para muchas técnicas de desarrollo • SQL, Streaming, Graph & in memory, MapReduce • Escriba "UDF" una vez y utilizar en todos los contextos • Pequeño, sencillo y elegante API • Fácil de aprender y utilizar; expresivo y extensible • Retiene ventajas de MapReduce (tolerancia a fallos ...)
  • 12. Conceptos • Colecciones de objetos se propagan en un cluster, almacenada en RAM o en Disco • Construido a través de transformaciones paralelas • Automáticamente reconstruido en caso de falla • Transformations (e.g. map, filter, groupBy) • Acciones (e.g. count, collect, save) Escribir programas en términos de transformaciones en conjuntos de datos distribuido Resilient Distributed Datasets Operationes
  • 13. Intercambio de Datos en MapReduce iter. 1 iter. 2 . . . Entrada HDFS leer HDFS escribir HDFS leer HDFS escribir Entrada consulta 1 consulta 2 consulta 3 resultado 1 resultado 2 número 3 . . . HDFS leer Lento debido a la replicación, la serialización, y el disco IO
  • 14. iter. 1 iter. 2 . . . Entrada Intercambio de Datos en Spark Repartido memoria Entrada consulta 1 pregunta 2 consulta 3 . . . una vez tratamiento 10-100× más rápido que la red y el disco
  • 15. Prueba de rendimiento de Sort Hadoop MR Record (2013) Spark Record (2014) Data Size 102.5 TB 100 TB Elapsed Time 72 mins 23 mins # Nodes 2100 206 # Cores 50400 physical 6592 virtualized Cluster disk throughput 3150 GB/s (est.) 618 GB/s Network dedicated data center, 10Gbps virtualized (EC2) 10Gbps network Sort rate 1.42 TB/min 4.27 TB/min Sort rate/node 0.67 GB/min 20.7 GB/min Sort benchmark, Daytona Gray: sort of 100 TB of data (1 trillion records) http://databricks.com/blog/2014/11/05/spark-officially-sets-a-new-record-in-large-scale- sorting.html Spark, 3x más rápido 1/10 de nodos
  • 16. Combina streaming y análisis complejos
  • 17. From single machines to distributed computingEscalar Spark en Cluster
  • 18. Spark clusters in Azure HDInsightSpark en Azure y Blob Storage
  • 22. Spark dentro de Hortonworks
  • 24. Programación en Spark ▪ Idea clave: conjuntos de datos distribuidos elásticos (DDR) ▪ Colecciones distribuidas de objetos que pueden ser almacenadas en caché en la memoria a través de los nodos del clúster ▪ Manipulada a través de diversos operadores paralelos ▪ Reconstruida automáticamente en caso de fallo ▪ Interfaz ▪ Lenguaje integrado Clean API Scala ▪ Puede ser usado interactivamente desde Scala
  • 25. Trabajo con RDDs RDD RDD RDD RDD Transformations Action Value linesWithSpark = textFile.filter(lambda line: "Spark” in line) linesWithSpark.count() 74 linesWithSpark.first() # Apache Spark textFile = sc.textFile(”SomeFile.txt”)
  • 26. DDR: Distribuidos ● Datos no tienen que estar en una misma máquina ● Los datos se separa en particiones ○ Si necesitamos podemos operar en nuestra partición de datos al mismo tiempo Trabajador Worker Worker Driver Block 1 Block 2 Block 3
  • 27. Ejemplos: Log Mining Cargar mensajes de error en memoria y buscar patrones Worker Worker Worker Driver val lines = spark.textFile("hdfs://...")
  • 28. Ejemplos: Log Mining Worker Worker Worker Driver val lines = spark.textFile("hdfs://...") Cargar mensajes de error en memoria y buscar patrones RDD Base
  • 29. Ejemplos: Log Mining Cargar mensajes de error en memoria y buscar patrones val lines = spark.textFile("hdfs://...") val errors = lines.filter(_.startsWith("ERROR")) Worker Worker Worker Driver
  • 30. Ejemplos: Log Mining val lines = spark.textFile("hdfs://...") val errors = lines.filter(_.startsWith("ERROR")) Worker Worker Worker Driver Cargar mensajes de error en memoria y buscar patrones RDD Transformado
  • 31. Ejemplos: Log Mining Cargar mensajes de error en memoria y buscar patrones val lines = spark.textFile("hdfs://...") val errors = lines.filter(_.startsWith("ERROR")) val messages = errors.map(_.split('t´)(2)) Worker Driver messages.filter(_.contains("mysql")).count() Worker Worker
  • 32. Ejemplos: Log Mining Cargar mensajes de error en memoria y buscar patrones val lines = spark.textFile("hdfs://...") val errors = lines.filter(_.startsWith("ERROR")) val messages = errors.map(_.split('t´)(2)) messages.cache() Worker Driver messages.filter(_.contains("mysql")).count() Worker Worker Poner RDD en cache
  • 33. Ejemplos: Log Mining Cargar mensajes de error en memoria y buscar patrones val lines = spark.textFile("hdfs://...") val errors = lines.filter(_.startsWith("ERROR")) val messages = errors.map(_.split('t´)(2)) messages.cache() Worker Worker Worker Driver messages.filter(_.contains("mysql")).count() Acción
  • 34. Ejemplos: Log Mining Cargar mensajes de error en memoria y buscar patrones val lines = spark.textFile("hdfs://...") val errors = lines.filter(_.startsWith("ERROR")) val messages = errors.map(_.split('t´)(2)) messages.cache() Worker Worker Driver messages.filter(_.contains("mysql")).count() Worker Block 1 Block 2 Block 3
  • 35. Ejemplos: Log Mining Cargar mensajes de error en memoria y buscar patrones val lines = spark.textFile("hdfs://...") val errors = lines.filter(_.startsWith("ERROR")) val messages = errors.map(_.split('t´)(2)) messages.cache() Worker Worker Worker Block 1 Block 2 Block 3 Driver tasks tasks messages.filter(_.contains("mysql")).count() tasks
  • 36. Ejemplos: Log Mining Cargar mensajes de error en memoria y buscar patrones val lines = spark.textFile("hdfs://...") val errors = lines.filter(_.startsWith("ERROR")) val messages = errors.map(_.split('t´)(2)) messages.cache() Worker Worker messages.filter(_.contains("mysql")).count() Worker Block 1 Block 2 Block 3 Driver Read HDFS Block Read HDFS Block Read HDFS Block
  • 37. Ejemplos: Log Mining Cargar mensajes de error en memoria y buscar patrones val lines = spark.textFile("hdfs://...") val errors = lines.filter(_.startsWith("ERROR")) val messages = errors.map(_.split('t´)(2)) messages.cache() Worker Worker Worker messages.filter(_.contains("mysql")).count() Block 1 Block 2 Block 3 Driver Cache 1 Cache 2 Cache 3 Process & Cache Data Process & Cache Data Process & Cache Data
  • 38. Ejemplos: Log Mining Cargar mensajes de error en memoria y buscar patrones val lines = spark.textFile("hdfs://...") val errors = lines.filter(_.startsWith("ERROR")) val messages = errors.map(_.split('t´)(2)) messages.cache() Worker Worker Worker messages.filter(_.contains("mysql")).count() Block 1 Block 2 Block 3 Driver Cache 1 Cache 2 Cache 3 results results results
  • 39. Ejemplos: Log Mining Cargar mensajes de error en memoria y buscar patrones val lines = spark.textFile("hdfs://...") val errors = lines.filter(_.startsWith("ERROR")) val messages = errors.map(_.split('t´)(2)) messages.cache() Worker Worker Worker Block 1 Block 2 Block 3 Driver Cache 1 Cache 2 Cache 3 messages.filter(_.contains("mysql")).count() messages.filter(_.contains("php")).count()
  • 40. Ejemplos: Log Mining Cargar mensajes de error en memoria y buscar patrones val lines = spark.textFile("hdfs://...") val errors = lines.filter(_.startsWith("ERROR")) val messages = errors.map(_.split('t´)(2)) messages.cache() Worker Worker Worker Block 1 Block 2 Block 3 Cache 1 Cache 2 Cache 3 messages.filter(_.contains("mysql")).count() messages.filter(_.contains("php")).count() tasks tasks tasks Driver
  • 41. Ejemplos: Log Mining Cargar mensajes de error en memoria y buscar patrones val lines = spark.textFile("hdfs://...") val errors = lines.filter(_.startsWith("ERROR")) val messages = errors.map(_.split('t´)(2)) messages.cache() Worker Worker Worker Block 1 Block 2 Block 3 Cache 1 Cache 2 Cache 3 messages.filter(_.contains("mysql")).count() messages.filter(_.contains("php")).count() Driver Process from Cache Process from Cache Process from Cache
  • 42. Ejemplos: Log Mining Cargar mensajes de error en memoria y buscar patrones val lines = spark.textFile("hdfs://...") val errors = lines.filter(_.startsWith("ERROR")) val messages = errors.map(_.split('t´)(2)) messages.cache() Worker Worker Worker Block 1 Block 2 Block 3 Cache 1 Cache 2 Cache 3 messages.filter(_.contains("mysql")).count() messages.filter(_.contains("php")).count() Driver results results results
  • 43. Ejemplos: Log Mining Cargar mensajes de error en memoria y buscar patrones val lines = spark.textFile("hdfs://...") val errors = lines.filter(_.startsWith("ERROR")) val messages = errors.map(_.split('t´)(2)) messages.cache() Worker Worker Worker Block 1 Block 2 Block 3 Cache 1 Cache 2 Cache 3 messages.filter(_.contains("mysql")).count() messages.filter(_.contains("php")).count() Driver Poner datos en cache ³ Resultados más rápidos 1 TB de datos de log • 5-7 sec desde cache vs. 170s desde disco
  • 44. Interactive Shell • Forma rápida de Aprender Spark • Disponible en Python y Scala • Se ejecuta como un aplicación en una existente Spark Cluster ...
  • 45. Administrative GUIs H5P: // <Standalone Master>: 8080 (por predeterminado)
  • 46. Source: http://spark.rstudio.com/ • Instalación mediante devtools • Carga datos en Spark DataFrames desde: data frames locales de R, Hive tables, CSV, JSON. • Conectar al instancias locales de Spark y Cluster Remotos de Spark sparklyr: R interface para Apache Spark
  • 47. dplyr and ML in sparklyr • Incluye 3 familias de funciones para machine learning • ml_*: Machine learning algorithms para analizar datos en el paquete spark.ml. • K-Means, GLM, LR, Survival Regression, DT, RF, GBT, PCA, Naive-Bayes, Multilayer Perceptron • ft_*: Feature transformers para manipulación de features individuales. • sdf_*: Funciones para manipulación de SparkDataFrames. • Provee un backend dplyr para manipulación, análisis y visualización de datos %>% dplyr con ML en sparklyr
  • 48. R Server: scale-out R, Enterprise ▪ 100% compatible con el open source R ▪ Se puede ejecutar en paralelo funciones R ▪ Ideal para parameter sweeps, simulation, scoring. ▪ Funciones distribuidas y escalables “rx” dentro del paquete “RevoScaleR”. ▪ Transformaciones: rxDataStep() ▪ Estadísticas: rxSummary(), rxQuantile(), rxChiSquaredTest(), rxCrossTabs()… ▪ Algoritmos: rxLinMod(), rxLogit(), rxKmeans(), rxBTrees(), rxDForest()… ▪ Paralelismo: rxSetComputeContext()
  • 51. R Server Hadoop Architecturehitecture R R R R R R R R R R Microsoft R Server Proceso R Maestro en Edge Node Apache YARN con Spark Proceso R Worker R en Data Nodes Datos en almacenamiento distribuido Procesos R en Edge Node
  • 52. Limpiar datos con SparkR dentro de R Server
  • 53. Train, Score, Evaluate por medio del R Server
  • 54. Publicar el Web Service desde R
  • 56. Uso del Shell Modes: MASTER=local ./spark-shell MASTER=local[2] ./spark-shell # local, 1 # local, 2 thread threads MASTER=spark://host:port ./spark-shell # cluster Launching: spark-shell pyspark (IPYTHON=1)
  • 57. Creación de RDDs # Load text file from local FS, HDFS, or S3 > sc.textFile(“file.txt”) > sc.textFile(“directory/*.txt”) > sc.textFile(“hdfs://namenode:9000/path/file”) # Use existing Hadoop InputFormat (Java/Scala only) > sc.hadoopFile(keyClass, valClass, inputFmt, conf) # Turn a Python collection into an RDD > sc.parallelize([1, 2, 3])
  • 58. Transformaciones básicas > nums = sc.parallelize([1, 2, 3]) # Pass each element through a function > squares = nums.map(lambda x: x*x) // {1, 4, 9} zero or more others# Map each element to > nums.flatMap(lambda > # => {0, 0, 1, 0, 1, x: => range(x)) 2} Range object (sequence of numbers 0, 1, …, x-‐1) # Keep elements passing a predicate > even = squares.filter(lambda x: x % 2 == 0) // {4}
  • 59. Acciones base > nums = sc.parallelize([1, 2, 3]) # Retrieve RDD contents as > nums.collect() # => [1, a local collection 2, 3] # Count number of elements > nums.count() # => 3 # Merge elements with function > nums.reduce(lambda an associative x, y: x + y) # => 6 # Write elements to a text file > nums.saveAsTextFile(“hdfs://file.txt”) # Return first K elements > nums.take(2) # => [1, 2]
  • 60. Trabajo con Key-Value Pairs Spark’s “distributed reduce” transformaciones para operar sobre RDDs de key-value pairs Python: pair = (a, b) pair[0] # => a pair[1] # => b Scala: val pair = (a, b) pair._1 // => a pair._2 // => b Java: Tuple2 pair = new Tuple2(a, b); pair._1 // => a pair._2 // => b
  • 61. Operaciones Key-Value > pets = sc.parallelize( [(“cat”, 1), (“dog”, 1), (“cat”, 2)]) > pets.sortByKey() # => {(cat, 1), (cat, 2), (dog, 1)} reduceByKey implementa combinadores del map > pets.reduceByKey(lambda x, y: # => {(cat, x + 3), y) (dog, 1)} > pets.groupByKey() # => {(cat, [1, 2]), (dog, [1])}
  • 62. > lines = sc.textFile(“hamlet.txt”) > counts = lines.flatMap(lambda line: line.split(“ ”)) .map(lambda word => (word, 1)) .reduceByKey(lambda x, y: x + y) Ejemplo: Word Count “not to be” “to” “be” (to, 1) (be, 1) (be, 2) (not, 1) (or,1) (to, 2) “to be or” “to” “be” (to, 1) (be, 1) “or” (or,1) “not” (not, 1)
  • 63. Key-Value Operaciones Adiconales > visits = sc.parallelize([ (“index.html”, (“about.html”, (“index.html”, “1.2.3.4”), “3.4.5.6”), “1.3.3.1”) ]) > pageNames = sc.parallelize([ (“index.html”, (“about.html”, “Home”), “About”) ]) > visits.join(pageNames ) > visits.cogroup(pageNames) # (“index.html”, ([“1.2.3.4”, “1.3.3.1”], [“Home”])) # (“about.html”, ([“3.4.5.6”], [“About”])) # # (“index.html”, (“index.html”, (“1.2.3.4”, (“1.3.3.1”, “Home”)) “Home”)) # (“about.html”, (“3.4.5.6”, “About”))
  • 64. Establecer el nivel de paralelistmo Todas las operaciones RDD tienen un parámetros para establecer la cantidad de tareas y: x + y, 5)> words.reduceByKey(lambda x, > words.groupByKey(5) > visits.join(pageViews, 5)
  • 65. Ajuste de la Nivel de Paralelismo Todos la par RDD operaciones tomar una opcional segundo parámetro para número de tareas y: x + y, 5)>palabras.reduceByKey(lambda X, > palabras.groupByKey(5) >visitas.unirse(Páginas vistas, 5)
  • 66. RDD Operadores Adicionales • map • filter • groupBy • sort • union • join • leftOuterJoin • rightOuterJoin • reduce • count • fold • reduceByKey • groupByKey • cogroup • cross • zip sample take first partitionBy mapWith pipe save ...