SlideShare una empresa de Scribd logo
1 de 36
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

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
 
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 AWSAmazon 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-2014Stratio
 
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 Meetupdhiguero
 
Presentacion sobre cassandra
Presentacion sobre cassandraPresentacion sobre cassandra
Presentacion sobre cassandrajesusnoseq
 
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 AWSAmazon 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 ventasGroup 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
 

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 sql Sentencias sql
Sentencias sql
 
Sentencias Sql
Sentencias SqlSentencias Sql
Sentencias Sql
 
Charla Mysql
Charla MysqlCharla Mysql
Charla Mysql
 

Último

LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfAdelaHerrera9
 
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdfCE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdfssuserc34f44
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfPPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfZamiertCruzSuyo
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaANDECE
 
3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptx3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptxJhordanGonzalo
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptxGARCIARAMIREZCESAR
 
Uso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendiosUso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendioseduardochavezg1
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUMarcosAlvarezSalinas
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
CLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilCLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilDissneredwinPaivahua
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfErikNivor
 
SOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadSOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadANDECE
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPJosLuisFrancoCaldern
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaSHERELYNSAMANTHAPALO1
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfIsbelRodrguez
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdfEdwinAlexanderSnchez2
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIAMayraOchoa35
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaANDECE
 
Electromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfElectromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfAnonymous0pBRsQXfnx
 

Último (20)

LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
 
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdfCE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
CE.040 DRENAJE PLUVIAL_RM 126-2021-VIVIENDA.pdf
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfPPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de Almería
 
3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptx3039_ftg_01Entregable 003_Matematica.pptx
3039_ftg_01Entregable 003_Matematica.pptx
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
 
Uso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendiosUso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendios
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
CLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilCLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civil
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
 
SOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadSOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidad
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresa
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdf
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes Granada
 
Electromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfElectromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.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).