SlideShare una empresa de Scribd logo
Spark & Cassandra 
Un vistazo al conector de DataStax 
@javituiter 
www.franciscojavierpulido.com
Anteriormente…
Apache Cassandra 
N 
N N 
N
Apache Spark 
RDD 
M 
W W W W
Alianza 
Jhonathan Ellis 
Presidente Apache Cassandra 
Matei Zaharia 
Creador de Apache Spark
¿Cuándo?
¿Cuándo?
El Conector
Características 
Tabla RDD 
N 
N N 
N 
M 
W W W W
Características 
Tabla RDD 
N 
N N 
N 
M 
W W W W 
Tabla RDD 
N 
N N 
N 
M 
W W W W 
Mapping de Filas de C* como Tuplas 
Guarda RDDs en C*(saveToCassandra) 
Soporta todos los tipos de datos de C* 
Filtrado de filas (en C*) mediante Where 
… 
Más en la web oficial.
Arquitectura 
N 
N N 
N 
M 
W W W W
Arquitectura 
M 
N 
W W W W 
N N N 
N
Ejecución 
>Spark-Shell 
Recomendado: 
· intelliJ 
· SBT 
· Scala 
Scala Java
Comunidad
Impacto
Impacto
¿Por qué?
Clientes 
A B C D E F
Demanda 
Custodia Total :: Analítica del Histórico
¿Cómo?
Interrelacionados 
Visualización 
BI Big Data 
Analítica NoSQL
Interrelacionados 
Visualización 
BI Big Data 
Analítica NoSQL 
Conector de Datastax 
Spark + Cassandra
En Práctica
Modelo de Datos C* 
//KeySpace 
CREATE KEYSPACE demoCMU WITH replication = {'class': 'SimpleStrategy', 'replication_factor':1}; 
use demoCMU; 
//Tabla 
CREATE TABLE demoCMU.asistentesCMU (id int PRIMARY KEY, nombre text, genero text); 
CREATE TABLE demoCMU.asistentesCopia (id int PRIMARY KEY, nombre text , tipo text); 
//Registros 
INSERT INTO demoCMU.asistentesCMU (id, nombre, genero) VALUES (1, 'Ale Murray', 'femenino'); 
INSERT INTO demoCMU.asistentesCMU (id, nombre, genero) VALUES (2, 'Iñigo Aldama', 'masculino'); 
INSERT INTO demoCMU.asistentesCMU (id, nombre, genero) VALUES (3, 'Antonio', 'masculino'); 
… 
INSERT INTO demoCMU.asistentesCMU (id, nombre, genero) VALUES (32, 'Jesus Arrabal', 'masculino');
Conexión al Conector (Spark-Shell) 
scala> sc.stop 
scala>:paste 
// Entering paste mode (ctrl-D to finish) 
import com.datastax.spark.connector._ //conector datastax spark+cassandra 
import org.apache.spark._ //conector Spark 
val conf = new SparkConf() //creamos una configuración 
conf.set("spark.cassandra.connection.host", "10.211.55.8") //añadimos nuestro host de C* 
conf.set("spark.home", "/opt/spark-1.0.2") //establecemos el Home de Spark 
val sc = new SparkContext("local[2]", "Cassandra Connector Test", conf) // Creamos el Contexto 
// Exiting paste mode, now interpreting.
Conexión al Conector 
sc.addJar("/opt/spark-1.0.2/lib_unmanaged/libthrift-0.9.1.jar") 
sc.addJar("/opt/spark-1.0.2/lib_unmanaged/cassandra-all-2.0.9.jar") 
sc.addJar("/opt/spark-1.0.2/lib_unmanaged/cassandra-clientutil-2.0.9.jar") 
sc.addJar("/opt/spark-1.0.2/lib_unmanaged/cassandra-thrift-2.0.9.jar") 
sc.addJar("/opt/spark-1.0.2/lib_unmanaged/cassandra-driver-core-2.0.4.jar") 
sc.addJar("/opt/spark-1.0.2/lib_unmanaged/spark-cassandra-connector_2.10-1.0.0-rc5.jar") 
sc.addJar("/opt/spark-1.0.2/lib_unmanaged/joda-time-2.3.jar") 
sc.addJar("/opt/spark-1.0.2/lib_unmanaged/joda-convert-1.2.jar") 
sc.addJar("/opt/spark-1.0.2/lib_unmanaged/httpcore-4.2.4.jar") 
sc.addJar("/opt/spark-1.0.2/lib_unmanaged/commons-codec-1.4.jar") 
sc.addJar("/opt/spark-1.0.2/lib_unmanaged/commons-lang-2.4.jar") 
sc.addJar("/opt/spark-1.0.2/lib_unmanaged/commons-logging-1.1.1.jar") 
sc.addJar("/opt/spark-1.0.2/lib_unmanaged/guava-16.0.1.jar") 
sc.addJar("/opt/spark-1.0.2/lib_unmanaged/httpclient-4.2.5.jar") 
sc.addJar("/opt/spark-1.0.2/lib_unmanaged/metrics-core-3.0.2.jar") 
sc.addJar("/opt/spark-1.0.2/lib_unmanaged/netty-3.9.0.Final.jar") 
sc.addJar("/opt/spark-1.0.2/lib_unmanaged/slf4j-api-1.7.5.jar") 
sc.addJar("/opt/spark-1.0.2/lib_unmanaged/snappy-java-1.0.5.jar")
Acceso a Tabla C* 
scala> val tableCMU = sc.cassandraTable("democmu", "asistentescmu") 
tableCMU: com.datastax.spark.connector.rdd.CassandraRDD[com.datastax.spark.connector.CassandraRow] = 
CassandraRDD[0] at RDD at CassandraRDD.scala:47
Lectura (I) 
scala> tableCMU.first 
res2: com.datastax.spark.connector.CassandraRow = CassandraRow{id: 20, genero: masculino, nombre: Marcos 
VR} 
scala> tableCMU.take(2) 
res3: Array[com.datastax.spark.connector.CassandraRow] = Array(CassandraRow{id: 20, genero: masculino, 
nombre: Marcos VR}, CassandraRow{id: 25, genero: masculino, nombre: Sergio Canal Rodrigo}) 
scala> tableCMU.take(1)(0).get[Int]("idasistente") 
res4: Int = 20
Lectura (II) 
scala> tableCMU.toArray 
res5: Array[com.datastax.spark.connector.CassandraRow] = Array(CassandraRow{id: 20, genero: masculino, nombre: 
Marcos VR}, CassandraRow{id: 25, genero: masculino, nombre: Sergio Canal Rodrigo}, CassandraRow{id: 31, genero: 
masculino, nombre: jose}, CassandraRow{id: 24, genero: masculino, no… 
scala> tableCMU.count 
res6: Long = 32 
scala> tableCMU.select("nombre").toArray 
res8: Array[com.datastax.spark.connector.CassandraRow] = Array(CassandraRow{nombre: Marcos VR}, 
CassandraRow{nombre: Sergio Canal Rodrigo}, CassandraRow{nombre: jose}, CassandraRow{n…
Copiado de Tablas 
tableCMU.map( row => ( 
row.get[Int]("id"), 
row.get[String]("nombre"), 
"cassandraRebelsMadrid” 
)).saveToCassandra("democmu","asistentescopia"
Filtros 
scala> tableCMU.filter(_.get[Int]("id")>30).toArray 
res15: Array[com.datastax.spark.connector.CassandraRow] = Array(CassandraRow{id: 31, genero: masculino, nombre: jose}, 
CassandraRow{id: 32, genero: masculino, nombre: Jesus Arrabal})
Importar un CSV 
scala>:paste 
// Entering paste mode (ctrl-D to finish) 
sc.textFile("file:///root/democmu.csv") 
.map(_.split(";")) 
.map( line => 
(line(0),line(1),line(2))) 
.saveToCassandra("democmu","asistentescopia") 
// Exiting paste mode, now interpreting.
MapReduce 
scala> :paste 
// Entering paste mode (ctrl-D to finish) 
tableCMU.map(_.get[String]("genero")) 
.flatMap(_.split(" ")) 
.map((_,1)) 
.reduceByKey(_+_).toArray 
// Exiting paste mode, now interpreting. 
res20: Array[(String, Int)] = Array((femenino,3), (masculino,29))
Y mucho más… 
Working with user-defined case classes and tuples 
Customizing the object mapping 
Using Connector in Java 
… 
Visita: https://github.com/datastax/spark-cassandra-connector/
¡Spark Streaming + Cassandra!
Gracias 
@javituiter 
www.franciscojavierpulido.com Fuentes: 
hkhamm (GitHub) 
Pkolaczk 
Russel Spitzer (Datastax) 
Martin Van Ryswyk (DataStax)

Más contenido relacionado

Similar a Integración de DataStax de Spark con Cassandra

BigData - NoSQL
BigData -  NoSQL BigData -  NoSQL
BigData - NoSQL
Jose Alvarez Muguerza
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)Videoconferencias UTPL
 
Práctica SQL en MYSQL
Práctica SQL en MYSQLPráctica SQL en MYSQL
Práctica SQL en MYSQL
lissette_torrealba
 
Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...
Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...
Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...
Aragón Open Data
 
Creando su primera aplicación de Big Data en AWS
Creando su primera aplicación de Big Data en AWSCreando su primera aplicación de Big Data en AWS
Creando su primera aplicación de Big Data en AWS
Amazon Web Services LATAM
 
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
 
Guiapractica de bd completa
Guiapractica de bd completaGuiapractica de bd completa
Guiapractica de bd completa
lissette_torrealba
 
Presentacion sobre cassandra
Presentacion sobre cassandraPresentacion sobre cassandra
Presentacion sobre cassandra
jesusnoseq
 
Instalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuInstalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuDavid Vevelas
 
Creando su primera aplicación de Big Data en AWS
Creando su primera aplicación de Big Data en AWSCreando su primera aplicación de Big Data en AWS
Creando su primera aplicación de Big Data en AWS
Amazon Web Services LATAM
 
Tm13 introduccion al_sql
Tm13 introduccion al_sqlTm13 introduccion al_sql
Tm13 introduccion al_sqlJulio Pari
 
consultas de visual estudio sistema de ventas
 consultas de visual estudio  sistema de  ventas consultas de visual estudio  sistema de  ventas
consultas de visual estudio sistema de ventas
Group Lliuya
 
Modificaciones De Ansi Sql
Modificaciones De Ansi SqlModificaciones De Ansi Sql
Modificaciones De Ansi Sqlguest0c9485
 
Modificaciones De Ansi Sql
Modificaciones De Ansi SqlModificaciones De Ansi Sql
Modificaciones De Ansi Sqlguest0c9485
 
Sentencias sql
Sentencias sql Sentencias sql
Sentencias sql
Cristian Villalva
 

Similar a Integración de DataStax de Spark con Cassandra (20)

BigData - NoSQL
BigData -  NoSQL BigData -  NoSQL
BigData - NoSQL
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
 
Práctica SQL en MYSQL
Práctica SQL en MYSQLPráctica SQL en MYSQL
Práctica SQL en MYSQL
 
Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...
Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...
Trabajar en el sector agroalimentario aragonés con datos y portales de datos ...
 
Creando su primera aplicación de Big Data en AWS
Creando su primera aplicación de Big Data en AWSCreando su primera aplicación de Big Data en AWS
Creando su primera aplicación de Big Data en AWS
 
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
 
Guiapractica de bd completa
Guiapractica de bd completaGuiapractica de bd completa
Guiapractica de bd completa
 
Presentacion sobre cassandra
Presentacion sobre cassandraPresentacion sobre cassandra
Presentacion sobre cassandra
 
Mysql
MysqlMysql
Mysql
 
Instalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuInstalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntu
 
Laboratorio de XML en DB2
Laboratorio de XML en DB2Laboratorio de XML en DB2
Laboratorio de XML en DB2
 
Creando su primera aplicación de Big Data en AWS
Creando su primera aplicación de Big Data en AWSCreando su primera aplicación de Big Data en AWS
Creando su primera aplicación de Big Data en AWS
 
Tm13 introduccion al_sql
Tm13 introduccion al_sqlTm13 introduccion al_sql
Tm13 introduccion al_sql
 
consultas de visual estudio sistema de ventas
 consultas de visual estudio  sistema de  ventas consultas de visual estudio  sistema de  ventas
consultas de visual estudio sistema de ventas
 
Modificaciones De Ansi Sql
Modificaciones De Ansi SqlModificaciones De Ansi Sql
Modificaciones De Ansi Sql
 
Modificaciones De Ansi Sql
Modificaciones De Ansi SqlModificaciones De Ansi Sql
Modificaciones De Ansi Sql
 
Sentencias Sql
Sentencias SqlSentencias Sql
Sentencias Sql
 
Sentencias sql
Sentencias sql Sentencias sql
Sentencias sql
 
Charla Mysql
Charla MysqlCharla Mysql
Charla Mysql
 

Último

Clasificacion geomecanica de Q de Barton
Clasificacion geomecanica de Q de BartonClasificacion geomecanica de Q de Barton
Clasificacion geomecanica de Q de Barton
edujunes132
 
Material magnetismo.pdf material del electromagnetismo con fórmulas
Material magnetismo.pdf material del electromagnetismo con fórmulasMaterial magnetismo.pdf material del electromagnetismo con fórmulas
Material magnetismo.pdf material del electromagnetismo con fórmulas
michiotes33
 
kupdf.net_copia-de-manual-agroislentildea.pdf
kupdf.net_copia-de-manual-agroislentildea.pdfkupdf.net_copia-de-manual-agroislentildea.pdf
kupdf.net_copia-de-manual-agroislentildea.pdf
nachososa8
 
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
siclaro982
 
Sistema de disposición sanitarias – UBS composteras 2 PARTE.pptx
Sistema de disposición sanitarias – UBS composteras 2 PARTE.pptxSistema de disposición sanitarias – UBS composteras 2 PARTE.pptx
Sistema de disposición sanitarias – UBS composteras 2 PARTE.pptx
RobertRamos84
 
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
FRANCISCOJUSTOSIERRA
 
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdfFocos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
PatoLokooGuevara
 
Infografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdfInfografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdf
DanielMelndez19
 
CAPACITACION EN USO Y MANEJO DE EXTINTORES
CAPACITACION EN USO Y MANEJO DE EXTINTORESCAPACITACION EN USO Y MANEJO DE EXTINTORES
CAPACITACION EN USO Y MANEJO DE EXTINTORES
vaniacordova6
 
EDT (Estructura de Desglose de Trabajo).pdf
EDT (Estructura de Desglose de Trabajo).pdfEDT (Estructura de Desglose de Trabajo).pdf
EDT (Estructura de Desglose de Trabajo).pdf
franco14021
 
164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas
jcbarriopedro69
 
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
CarlitosWay20
 
Flujo vehicular en análisis de trafico vial
Flujo vehicular en análisis de trafico vialFlujo vehicular en análisis de trafico vial
Flujo vehicular en análisis de trafico vial
SamuelMendozaS
 
Taller de Robots Velocistas2 esquema....
Taller de Robots Velocistas2 esquema....Taller de Robots Velocistas2 esquema....
Taller de Robots Velocistas2 esquema....
lawjose243
 
ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...
ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...
ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...
LuisLobatoingaruca
 
Bioelementos y biomoleculas.pptx bioquímica
Bioelementos y biomoleculas.pptx bioquímicaBioelementos y biomoleculas.pptx bioquímica
Bioelementos y biomoleculas.pptx bioquímica
KellyCespedesMaytahu
 
Metodología - Proyecto de ingeniería "Dispensador automático"
Metodología - Proyecto de ingeniería "Dispensador automático"Metodología - Proyecto de ingeniería "Dispensador automático"
Metodología - Proyecto de ingeniería "Dispensador automático"
cristiaansabi19
 
libro conabilidad financiera, 5ta edicion.pdf
libro conabilidad financiera, 5ta edicion.pdflibro conabilidad financiera, 5ta edicion.pdf
libro conabilidad financiera, 5ta edicion.pdf
MiriamAquino27
 
01-introduccion-a-la-perforacion.pdf de minas
01-introduccion-a-la-perforacion.pdf de minas01-introduccion-a-la-perforacion.pdf de minas
01-introduccion-a-la-perforacion.pdf de minas
ivan848686
 
Cuadro sinoptico de clasificacion de las industrias.pdf
Cuadro sinoptico de clasificacion de las industrias.pdfCuadro sinoptico de clasificacion de las industrias.pdf
Cuadro sinoptico de clasificacion de las industrias.pdf
LizetGuadalupeHernan
 

Último (20)

Clasificacion geomecanica de Q de Barton
Clasificacion geomecanica de Q de BartonClasificacion geomecanica de Q de Barton
Clasificacion geomecanica de Q de Barton
 
Material magnetismo.pdf material del electromagnetismo con fórmulas
Material magnetismo.pdf material del electromagnetismo con fórmulasMaterial magnetismo.pdf material del electromagnetismo con fórmulas
Material magnetismo.pdf material del electromagnetismo con fórmulas
 
kupdf.net_copia-de-manual-agroislentildea.pdf
kupdf.net_copia-de-manual-agroislentildea.pdfkupdf.net_copia-de-manual-agroislentildea.pdf
kupdf.net_copia-de-manual-agroislentildea.pdf
 
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
 
Sistema de disposición sanitarias – UBS composteras 2 PARTE.pptx
Sistema de disposición sanitarias – UBS composteras 2 PARTE.pptxSistema de disposición sanitarias – UBS composteras 2 PARTE.pptx
Sistema de disposición sanitarias – UBS composteras 2 PARTE.pptx
 
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
 
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdfFocos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
 
Infografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdfInfografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdf
 
CAPACITACION EN USO Y MANEJO DE EXTINTORES
CAPACITACION EN USO Y MANEJO DE EXTINTORESCAPACITACION EN USO Y MANEJO DE EXTINTORES
CAPACITACION EN USO Y MANEJO DE EXTINTORES
 
EDT (Estructura de Desglose de Trabajo).pdf
EDT (Estructura de Desglose de Trabajo).pdfEDT (Estructura de Desglose de Trabajo).pdf
EDT (Estructura de Desglose de Trabajo).pdf
 
164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas
 
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
 
Flujo vehicular en análisis de trafico vial
Flujo vehicular en análisis de trafico vialFlujo vehicular en análisis de trafico vial
Flujo vehicular en análisis de trafico vial
 
Taller de Robots Velocistas2 esquema....
Taller de Robots Velocistas2 esquema....Taller de Robots Velocistas2 esquema....
Taller de Robots Velocistas2 esquema....
 
ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...
ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...
ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...
 
Bioelementos y biomoleculas.pptx bioquímica
Bioelementos y biomoleculas.pptx bioquímicaBioelementos y biomoleculas.pptx bioquímica
Bioelementos y biomoleculas.pptx bioquímica
 
Metodología - Proyecto de ingeniería "Dispensador automático"
Metodología - Proyecto de ingeniería "Dispensador automático"Metodología - Proyecto de ingeniería "Dispensador automático"
Metodología - Proyecto de ingeniería "Dispensador automático"
 
libro conabilidad financiera, 5ta edicion.pdf
libro conabilidad financiera, 5ta edicion.pdflibro conabilidad financiera, 5ta edicion.pdf
libro conabilidad financiera, 5ta edicion.pdf
 
01-introduccion-a-la-perforacion.pdf de minas
01-introduccion-a-la-perforacion.pdf de minas01-introduccion-a-la-perforacion.pdf de minas
01-introduccion-a-la-perforacion.pdf de minas
 
Cuadro sinoptico de clasificacion de las industrias.pdf
Cuadro sinoptico de clasificacion de las industrias.pdfCuadro sinoptico de clasificacion de las industrias.pdf
Cuadro sinoptico de clasificacion de las industrias.pdf
 

Integración de DataStax de Spark con Cassandra

  • 1. Spark & Cassandra Un vistazo al conector de DataStax @javituiter www.franciscojavierpulido.com
  • 4. Apache Spark RDD M W W W W
  • 5. Alianza Jhonathan Ellis Presidente Apache Cassandra Matei Zaharia Creador de Apache Spark
  • 9. Características Tabla RDD N N N N M W W W W
  • 10. Características Tabla RDD N N N N M W W W W Tabla RDD N N N N M W W W W Mapping de Filas de C* como Tuplas Guarda RDDs en C*(saveToCassandra) Soporta todos los tipos de datos de C* Filtrado de filas (en C*) mediante Where … Más en la web oficial.
  • 11. Arquitectura N N N N M W W W W
  • 12. Arquitectura M N W W W W N N N N
  • 13. Ejecución >Spark-Shell Recomendado: · intelliJ · SBT · Scala Scala Java
  • 18. Clientes A B C D E F
  • 19. Demanda Custodia Total :: Analítica del Histórico
  • 21. Interrelacionados Visualización BI Big Data Analítica NoSQL
  • 22. Interrelacionados Visualización BI Big Data Analítica NoSQL Conector de Datastax Spark + Cassandra
  • 24. Modelo de Datos C* //KeySpace CREATE KEYSPACE demoCMU WITH replication = {'class': 'SimpleStrategy', 'replication_factor':1}; use demoCMU; //Tabla CREATE TABLE demoCMU.asistentesCMU (id int PRIMARY KEY, nombre text, genero text); CREATE TABLE demoCMU.asistentesCopia (id int PRIMARY KEY, nombre text , tipo text); //Registros INSERT INTO demoCMU.asistentesCMU (id, nombre, genero) VALUES (1, 'Ale Murray', 'femenino'); INSERT INTO demoCMU.asistentesCMU (id, nombre, genero) VALUES (2, 'Iñigo Aldama', 'masculino'); INSERT INTO demoCMU.asistentesCMU (id, nombre, genero) VALUES (3, 'Antonio', 'masculino'); … INSERT INTO demoCMU.asistentesCMU (id, nombre, genero) VALUES (32, 'Jesus Arrabal', 'masculino');
  • 25. Conexión al Conector (Spark-Shell) scala> sc.stop scala>:paste // Entering paste mode (ctrl-D to finish) import com.datastax.spark.connector._ //conector datastax spark+cassandra import org.apache.spark._ //conector Spark val conf = new SparkConf() //creamos una configuración conf.set("spark.cassandra.connection.host", "10.211.55.8") //añadimos nuestro host de C* conf.set("spark.home", "/opt/spark-1.0.2") //establecemos el Home de Spark val sc = new SparkContext("local[2]", "Cassandra Connector Test", conf) // Creamos el Contexto // Exiting paste mode, now interpreting.
  • 26. Conexión al Conector sc.addJar("/opt/spark-1.0.2/lib_unmanaged/libthrift-0.9.1.jar") sc.addJar("/opt/spark-1.0.2/lib_unmanaged/cassandra-all-2.0.9.jar") sc.addJar("/opt/spark-1.0.2/lib_unmanaged/cassandra-clientutil-2.0.9.jar") sc.addJar("/opt/spark-1.0.2/lib_unmanaged/cassandra-thrift-2.0.9.jar") sc.addJar("/opt/spark-1.0.2/lib_unmanaged/cassandra-driver-core-2.0.4.jar") sc.addJar("/opt/spark-1.0.2/lib_unmanaged/spark-cassandra-connector_2.10-1.0.0-rc5.jar") sc.addJar("/opt/spark-1.0.2/lib_unmanaged/joda-time-2.3.jar") sc.addJar("/opt/spark-1.0.2/lib_unmanaged/joda-convert-1.2.jar") sc.addJar("/opt/spark-1.0.2/lib_unmanaged/httpcore-4.2.4.jar") sc.addJar("/opt/spark-1.0.2/lib_unmanaged/commons-codec-1.4.jar") sc.addJar("/opt/spark-1.0.2/lib_unmanaged/commons-lang-2.4.jar") sc.addJar("/opt/spark-1.0.2/lib_unmanaged/commons-logging-1.1.1.jar") sc.addJar("/opt/spark-1.0.2/lib_unmanaged/guava-16.0.1.jar") sc.addJar("/opt/spark-1.0.2/lib_unmanaged/httpclient-4.2.5.jar") sc.addJar("/opt/spark-1.0.2/lib_unmanaged/metrics-core-3.0.2.jar") sc.addJar("/opt/spark-1.0.2/lib_unmanaged/netty-3.9.0.Final.jar") sc.addJar("/opt/spark-1.0.2/lib_unmanaged/slf4j-api-1.7.5.jar") sc.addJar("/opt/spark-1.0.2/lib_unmanaged/snappy-java-1.0.5.jar")
  • 27. Acceso a Tabla C* scala> val tableCMU = sc.cassandraTable("democmu", "asistentescmu") tableCMU: com.datastax.spark.connector.rdd.CassandraRDD[com.datastax.spark.connector.CassandraRow] = CassandraRDD[0] at RDD at CassandraRDD.scala:47
  • 28. Lectura (I) scala> tableCMU.first res2: com.datastax.spark.connector.CassandraRow = CassandraRow{id: 20, genero: masculino, nombre: Marcos VR} scala> tableCMU.take(2) res3: Array[com.datastax.spark.connector.CassandraRow] = Array(CassandraRow{id: 20, genero: masculino, nombre: Marcos VR}, CassandraRow{id: 25, genero: masculino, nombre: Sergio Canal Rodrigo}) scala> tableCMU.take(1)(0).get[Int]("idasistente") res4: Int = 20
  • 29. Lectura (II) scala> tableCMU.toArray res5: Array[com.datastax.spark.connector.CassandraRow] = Array(CassandraRow{id: 20, genero: masculino, nombre: Marcos VR}, CassandraRow{id: 25, genero: masculino, nombre: Sergio Canal Rodrigo}, CassandraRow{id: 31, genero: masculino, nombre: jose}, CassandraRow{id: 24, genero: masculino, no… scala> tableCMU.count res6: Long = 32 scala> tableCMU.select("nombre").toArray res8: Array[com.datastax.spark.connector.CassandraRow] = Array(CassandraRow{nombre: Marcos VR}, CassandraRow{nombre: Sergio Canal Rodrigo}, CassandraRow{nombre: jose}, CassandraRow{n…
  • 30. Copiado de Tablas tableCMU.map( row => ( row.get[Int]("id"), row.get[String]("nombre"), "cassandraRebelsMadrid” )).saveToCassandra("democmu","asistentescopia"
  • 31. Filtros scala> tableCMU.filter(_.get[Int]("id")>30).toArray res15: Array[com.datastax.spark.connector.CassandraRow] = Array(CassandraRow{id: 31, genero: masculino, nombre: jose}, CassandraRow{id: 32, genero: masculino, nombre: Jesus Arrabal})
  • 32. Importar un CSV scala>:paste // Entering paste mode (ctrl-D to finish) sc.textFile("file:///root/democmu.csv") .map(_.split(";")) .map( line => (line(0),line(1),line(2))) .saveToCassandra("democmu","asistentescopia") // Exiting paste mode, now interpreting.
  • 33. MapReduce scala> :paste // Entering paste mode (ctrl-D to finish) tableCMU.map(_.get[String]("genero")) .flatMap(_.split(" ")) .map((_,1)) .reduceByKey(_+_).toArray // Exiting paste mode, now interpreting. res20: Array[(String, Int)] = Array((femenino,3), (masculino,29))
  • 34. Y mucho más… Working with user-defined case classes and tuples Customizing the object mapping Using Connector in Java … Visita: https://github.com/datastax/spark-cassandra-connector/
  • 35. ¡Spark Streaming + Cassandra!
  • 36. Gracias @javituiter www.franciscojavierpulido.com Fuentes: hkhamm (GitHub) Pkolaczk Russel Spitzer (Datastax) Martin Van Ryswyk (DataStax)

Notas del editor

  1. · Distribuida · Peer to peer · Tolerante a fallos · Escala linealmente · Sencilla de utilizar
  2. · Motor de procesamiento de grandes volúmenes de datos en memoria · Arquitectura maestro esclavo: Master & Workers · Sencillo de programar · RDDs: Resilient Distributed Datasets (Lineage) · Es compatible con HDFS, CSVs, Parquet y con Cassandra.
  3. · En Mayo anunciaron datastax y databricks que unían lazos
  4. · El conector se lanzó a mediados de Julio · Gran impacto en la comunidad · Desde entonces hemos estado trabajando con el
  5. · La principal: De tabla a RDD
  6. · Varias tablas en RDDs
  7. · Cada Spark Executor mantiene una conexión con el cluster de C* · Colocar cada nodo de Cassandra en el mismo servidor de cada worker de Spark puede disminuir la latencia entre ambos (no garantizado).