SlideShare una empresa de Scribd logo
1 de 37
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? 
julio 
LANZAMIENTO 
2014
El Conector
Características 
RDD 
Tabla
Características 
RDD 
Tabla 
RDD 
Tabla 
Mapping 
de 
Filas 
de 
C* 
como 
Tuplas 
Guarda 
RDDs 
en 
C*(saveToCassandra) 
Soporta 
todos 
los 
Opos 
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íOca 
del 
Histórico
¿Cómo?
Interrelacionados 
Visualización 
BI 
Big 
Data 
AnalíOca 
NoSQL
Interrelacionados 
Visualización 
BI 
Big 
Data 
AnalíOca 
NoSQL 
Conector 
de 
Datastax 
Spark 
+ 
Cassandra
En Práctica
Modelo de Datos C* 
//KeySpace 
CREATE 
KEYSPACE 
demoCMU 
WITH 
replicaOon 
= 
{'class': 
'SimpleStrategy', 
'replicaOon_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 
, 
Opo 
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.connecOon.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 
// 
ExiOng 
paste 
mode, 
now 
interpreOng.
Conexión al Conector 
sc.addJar("/opt/spark-­‐1.0.2/lib_unmanaged/libthriu-­‐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-­‐clientuOl-­‐2.0.9.jar") 
sc.addJar("/opt/spark-­‐1.0.2/lib_unmanaged/cassandra-­‐thriu-­‐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-­‐Ome-­‐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/hwpcore-­‐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/hwpclient-­‐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/newy-­‐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") 
// 
ExiOng 
paste 
mode, 
now 
interpreOng.
MapReduce 
scala> 
:paste 
// 
Entering 
paste 
mode 
(ctrl-­‐D 
to 
finish) 
tableCMU.map(_.get[String]("genero")) 
.flatMap(_.split(" 
")) 
.map((_,1)) 
.reduceByKey(_+_).toArray 
// 
ExiOng 
paste 
mode, 
now 
interpreOng. 
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: 
hwps://github.com/datastax/spark-­‐cassandra-­‐connector/
Una cosa más… 
@javituiter 
www.franciscojavierpulido.com
Spark+Cassandra Streaming! 
val 
ssc 
= 
new 
StreamingContext(sparkConf, 
Seconds(1)) 
val 
lines 
= 
ssc.socketTextStream(serverIP, 
serverPort)
Gracias 
@javituiter 
www.franciscojavierpulido.com 
Fuentes: 
hkhamm 
(GitHub) 
Pkolaczk 
Russel 
Spitzer 
(Datastax) 
MarOn 
Van 
Ryswyk 
(DataStax)

Más contenido relacionado

Destacado

Introduccion a Machine Learning
Introduccion a Machine LearningIntroduccion a Machine Learning
Introduccion a Machine LearningStratebi
 
Arquitectura y Funcionalidades Liferay Portal
Arquitectura y Funcionalidades Liferay PortalArquitectura y Funcionalidades Liferay Portal
Arquitectura y Funcionalidades Liferay PortalStratebi
 
Ejemplos de Cuadros de Mando Open Source
Ejemplos de Cuadros de Mando Open SourceEjemplos de Cuadros de Mando Open Source
Ejemplos de Cuadros de Mando Open SourceStratebi
 
Stratebi Big Data
Stratebi Big DataStratebi Big Data
Stratebi Big DataStratebi
 
Cursos Big Data Open Source
Cursos Big Data Open SourceCursos Big Data Open Source
Cursos Big Data Open SourceStratebi
 
Introduccion a Cassandra
Introduccion a CassandraIntroduccion a Cassandra
Introduccion a CassandraStratebi
 
Apache Storm: Introduccion
Apache Storm: IntroduccionApache Storm: Introduccion
Apache Storm: IntroduccionStratebi
 
Moved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterprise
Moved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterpriseMoved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterprise
Moved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterpriseMilen Dyankov
 
Big Data, casos, tecnologias y aplicaciones reales
Big Data, casos, tecnologias y aplicaciones realesBig Data, casos, tecnologias y aplicaciones reales
Big Data, casos, tecnologias y aplicaciones realesStratebi
 
Comparativa herramientas Business Intelligence
Comparativa herramientas Business IntelligenceComparativa herramientas Business Intelligence
Comparativa herramientas Business IntelligenceStratebi
 
69 claves para conocer Big Data
69 claves para conocer Big Data69 claves para conocer Big Data
69 claves para conocer Big DataStratebi
 
Big Data para Dummies
Big Data para DummiesBig Data para Dummies
Big Data para DummiesStratebi
 
Cursos de Big Data y Machine Learning
Cursos de Big Data y Machine LearningCursos de Big Data y Machine Learning
Cursos de Big Data y Machine LearningStratebi
 
53 Claves para conocer Machine Learning
53 Claves para conocer Machine Learning53 Claves para conocer Machine Learning
53 Claves para conocer Machine LearningStratebi
 
Curso de creación de Dashboards Open Source
Curso de creación de Dashboards Open SourceCurso de creación de Dashboards Open Source
Curso de creación de Dashboards Open SourceStratebi
 

Destacado (17)

Introduccion a Machine Learning
Introduccion a Machine LearningIntroduccion a Machine Learning
Introduccion a Machine Learning
 
Alfresco
AlfrescoAlfresco
Alfresco
 
Arquitectura y Funcionalidades Liferay Portal
Arquitectura y Funcionalidades Liferay PortalArquitectura y Funcionalidades Liferay Portal
Arquitectura y Funcionalidades Liferay Portal
 
Ejemplos de Cuadros de Mando Open Source
Ejemplos de Cuadros de Mando Open SourceEjemplos de Cuadros de Mando Open Source
Ejemplos de Cuadros de Mando Open Source
 
Stratebi Big Data
Stratebi Big DataStratebi Big Data
Stratebi Big Data
 
Cursos Big Data Open Source
Cursos Big Data Open SourceCursos Big Data Open Source
Cursos Big Data Open Source
 
Introduccion a Cassandra
Introduccion a CassandraIntroduccion a Cassandra
Introduccion a Cassandra
 
Apache Storm: Introduccion
Apache Storm: IntroduccionApache Storm: Introduccion
Apache Storm: Introduccion
 
Moved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterprise
Moved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterpriseMoved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterprise
Moved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterprise
 
Big Data, casos, tecnologias y aplicaciones reales
Big Data, casos, tecnologias y aplicaciones realesBig Data, casos, tecnologias y aplicaciones reales
Big Data, casos, tecnologias y aplicaciones reales
 
Comparativa herramientas Business Intelligence
Comparativa herramientas Business IntelligenceComparativa herramientas Business Intelligence
Comparativa herramientas Business Intelligence
 
69 claves para conocer Big Data
69 claves para conocer Big Data69 claves para conocer Big Data
69 claves para conocer Big Data
 
Liferay 7
Liferay 7Liferay 7
Liferay 7
 
Big Data para Dummies
Big Data para DummiesBig Data para Dummies
Big Data para Dummies
 
Cursos de Big Data y Machine Learning
Cursos de Big Data y Machine LearningCursos de Big Data y Machine Learning
Cursos de Big Data y Machine Learning
 
53 Claves para conocer Machine Learning
53 Claves para conocer Machine Learning53 Claves para conocer Machine Learning
53 Claves para conocer Machine Learning
 
Curso de creación de Dashboards Open Source
Curso de creación de Dashboards Open SourceCurso de creación de Dashboards Open Source
Curso de creación de Dashboards Open Source
 

Similar a Cassandra Meetup

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
 
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
 
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
 
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
 
Instalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuInstalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuDavid Vevelas
 
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
 
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
 
Presentacion sobre cassandra
Presentacion sobre cassandraPresentacion sobre cassandra
Presentacion sobre cassandrajesusnoseq
 
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
 
Curso migración de aplicaciones nsl nk90 a tmp
Curso migración de aplicaciones nsl nk90 a tmpCurso migración de aplicaciones nsl nk90 a tmp
Curso migración de aplicaciones nsl nk90 a tmpEdgar Solis
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apisCloudAppi
 
Programacion de arduino(JHANCARLOS RAMOS COTRINA)
Programacion de arduino(JHANCARLOS RAMOS COTRINA)Programacion de arduino(JHANCARLOS RAMOS COTRINA)
Programacion de arduino(JHANCARLOS RAMOS COTRINA)jhancarlos ramos cotrina
 

Similar a Cassandra Meetup (20)

BigData - NoSQL
BigData -  NoSQL BigData -  NoSQL
BigData - NoSQL
 
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
 
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
 
Guiapractica de bd completa
Guiapractica de bd completaGuiapractica de bd completa
Guiapractica de bd completa
 
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
 
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
 
Instalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuInstalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntu
 
Práctica SQL en MYSQL
Práctica SQL en MYSQLPráctica SQL en MYSQL
Práctica SQL en MYSQL
 
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
 
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 ...
 
Presentacion sobre cassandra
Presentacion sobre cassandraPresentacion sobre cassandra
Presentacion sobre 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)
 
Curso migración de aplicaciones nsl nk90 a tmp
Curso migración de aplicaciones nsl nk90 a tmpCurso migración de aplicaciones nsl nk90 a tmp
Curso migración de aplicaciones nsl nk90 a tmp
 
Manual tecnico
Manual tecnicoManual tecnico
Manual tecnico
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
 
Computación distribuida usando Python
Computación distribuida usando PythonComputación distribuida usando Python
Computación distribuida usando Python
 
Keypad 4 x4
Keypad 4 x4Keypad 4 x4
Keypad 4 x4
 
Programacion de arduino(JHANCARLOS RAMOS COTRINA)
Programacion de arduino(JHANCARLOS RAMOS COTRINA)Programacion de arduino(JHANCARLOS RAMOS COTRINA)
Programacion de arduino(JHANCARLOS RAMOS COTRINA)
 
Secure txscalacsharp
Secure txscalacsharpSecure txscalacsharp
Secure txscalacsharp
 
Cassandra
Cassandra Cassandra
Cassandra
 

Más de Stratebi

Destinos turisticos inteligentes
Destinos turisticos inteligentesDestinos turisticos inteligentes
Destinos turisticos inteligentesStratebi
 
Azure Synapse
Azure SynapseAzure Synapse
Azure SynapseStratebi
 
Options for Dashboards with Python
Options for Dashboards with PythonOptions for Dashboards with Python
Options for Dashboards with PythonStratebi
 
Dashboards with Python
Dashboards with PythonDashboards with Python
Dashboards with PythonStratebi
 
PowerBI Tips y buenas practicas
PowerBI Tips y buenas practicasPowerBI Tips y buenas practicas
PowerBI Tips y buenas practicasStratebi
 
Machine Learning Meetup Spain
Machine Learning Meetup SpainMachine Learning Meetup Spain
Machine Learning Meetup SpainStratebi
 
LinceBI IIoT (Industrial Internet of Things)
LinceBI IIoT (Industrial Internet of Things)LinceBI IIoT (Industrial Internet of Things)
LinceBI IIoT (Industrial Internet of Things)Stratebi
 
SAP - PowerBI integration
SAP - PowerBI integrationSAP - PowerBI integration
SAP - PowerBI integrationStratebi
 
Aplicaciones Big Data Marketing
Aplicaciones Big Data MarketingAplicaciones Big Data Marketing
Aplicaciones Big Data MarketingStratebi
 
A federated information infrastructure that works
A federated information infrastructure that works A federated information infrastructure that works
A federated information infrastructure that works Stratebi
 
9 problemas en proyectos Data Analytics
9 problemas en proyectos Data Analytics9 problemas en proyectos Data Analytics
9 problemas en proyectos Data AnalyticsStratebi
 
PowerBI: Soluciones, Aplicaciones y Cursos
PowerBI: Soluciones, Aplicaciones y CursosPowerBI: Soluciones, Aplicaciones y Cursos
PowerBI: Soluciones, Aplicaciones y CursosStratebi
 
Sports Analytics
Sports AnalyticsSports Analytics
Sports AnalyticsStratebi
 
Vertica Extreme Analysis
Vertica Extreme AnalysisVertica Extreme Analysis
Vertica Extreme AnalysisStratebi
 
Businesss Intelligence con Vertica y PowerBI
Businesss Intelligence con Vertica y PowerBIBusinesss Intelligence con Vertica y PowerBI
Businesss Intelligence con Vertica y PowerBIStratebi
 
Vertica Analytics Database general overview
Vertica Analytics Database general overviewVertica Analytics Database general overview
Vertica Analytics Database general overviewStratebi
 
Talend Cloud en detalle
Talend Cloud en detalleTalend Cloud en detalle
Talend Cloud en detalleStratebi
 
Master Data Management (MDM) con Talend
Master Data Management (MDM) con TalendMaster Data Management (MDM) con Talend
Master Data Management (MDM) con TalendStratebi
 
Talend Introducion
Talend IntroducionTalend Introducion
Talend IntroducionStratebi
 
Talent Analytics
Talent AnalyticsTalent Analytics
Talent AnalyticsStratebi
 

Más de Stratebi (20)

Destinos turisticos inteligentes
Destinos turisticos inteligentesDestinos turisticos inteligentes
Destinos turisticos inteligentes
 
Azure Synapse
Azure SynapseAzure Synapse
Azure Synapse
 
Options for Dashboards with Python
Options for Dashboards with PythonOptions for Dashboards with Python
Options for Dashboards with Python
 
Dashboards with Python
Dashboards with PythonDashboards with Python
Dashboards with Python
 
PowerBI Tips y buenas practicas
PowerBI Tips y buenas practicasPowerBI Tips y buenas practicas
PowerBI Tips y buenas practicas
 
Machine Learning Meetup Spain
Machine Learning Meetup SpainMachine Learning Meetup Spain
Machine Learning Meetup Spain
 
LinceBI IIoT (Industrial Internet of Things)
LinceBI IIoT (Industrial Internet of Things)LinceBI IIoT (Industrial Internet of Things)
LinceBI IIoT (Industrial Internet of Things)
 
SAP - PowerBI integration
SAP - PowerBI integrationSAP - PowerBI integration
SAP - PowerBI integration
 
Aplicaciones Big Data Marketing
Aplicaciones Big Data MarketingAplicaciones Big Data Marketing
Aplicaciones Big Data Marketing
 
A federated information infrastructure that works
A federated information infrastructure that works A federated information infrastructure that works
A federated information infrastructure that works
 
9 problemas en proyectos Data Analytics
9 problemas en proyectos Data Analytics9 problemas en proyectos Data Analytics
9 problemas en proyectos Data Analytics
 
PowerBI: Soluciones, Aplicaciones y Cursos
PowerBI: Soluciones, Aplicaciones y CursosPowerBI: Soluciones, Aplicaciones y Cursos
PowerBI: Soluciones, Aplicaciones y Cursos
 
Sports Analytics
Sports AnalyticsSports Analytics
Sports Analytics
 
Vertica Extreme Analysis
Vertica Extreme AnalysisVertica Extreme Analysis
Vertica Extreme Analysis
 
Businesss Intelligence con Vertica y PowerBI
Businesss Intelligence con Vertica y PowerBIBusinesss Intelligence con Vertica y PowerBI
Businesss Intelligence con Vertica y PowerBI
 
Vertica Analytics Database general overview
Vertica Analytics Database general overviewVertica Analytics Database general overview
Vertica Analytics Database general overview
 
Talend Cloud en detalle
Talend Cloud en detalleTalend Cloud en detalle
Talend Cloud en detalle
 
Master Data Management (MDM) con Talend
Master Data Management (MDM) con TalendMaster Data Management (MDM) con Talend
Master Data Management (MDM) con Talend
 
Talend Introducion
Talend IntroducionTalend Introducion
Talend Introducion
 
Talent Analytics
Talent AnalyticsTalent Analytics
Talent Analytics
 

Último

Data Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datosData Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datosssuser948499
 
CAPACITACION_higiene_industrial (1).ppt...
CAPACITACION_higiene_industrial (1).ppt...CAPACITACION_higiene_industrial (1).ppt...
CAPACITACION_higiene_industrial (1).ppt...jhoecabanillas12
 
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdfREPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdfIrapuatoCmovamos
 
CUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdfCUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdfEDUARDO MAMANI MAMANI
 
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdfPREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdfluisccollana
 
que son los planes de ordenamiento predial POP.pptx
que son los planes de ordenamiento predial  POP.pptxque son los planes de ordenamiento predial  POP.pptx
que son los planes de ordenamiento predial POP.pptxSergiothaine2
 
El Teatro musical (qué es, cuál es su historia y trayectoria...)
El Teatro musical (qué es, cuál es su historia y trayectoria...)El Teatro musical (qué es, cuál es su historia y trayectoria...)
El Teatro musical (qué es, cuál es su historia y trayectoria...)estebancitoherrera
 
La importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresaLa importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresamerca6
 
tipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicacióntipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicaciónJonathanAntonioMaldo
 
2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptx2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptxccordovato
 
SUNEDU - Superintendencia Nacional de Educación superior Universitaria
SUNEDU - Superintendencia Nacional de Educación superior UniversitariaSUNEDU - Superintendencia Nacional de Educación superior Universitaria
SUNEDU - Superintendencia Nacional de Educación superior Universitariachayananazcosimeon
 
HABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdfHABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdfGEINER22
 
bases-cye-2024(2) una sola descarga en base de feria de
bases-cye-2024(2) una sola descarga en base de feria debases-cye-2024(2) una sola descarga en base de feria de
bases-cye-2024(2) una sola descarga en base de feria deCalet Cáceres Vergara
 
LA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derechoLA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derechojuliosabino1
 
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfREPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfIrapuatoCmovamos
 
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,juberrodasflores
 
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docxmarthaarroyo16
 

Último (17)

Data Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datosData Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datos
 
CAPACITACION_higiene_industrial (1).ppt...
CAPACITACION_higiene_industrial (1).ppt...CAPACITACION_higiene_industrial (1).ppt...
CAPACITACION_higiene_industrial (1).ppt...
 
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdfREPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
 
CUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdfCUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdf
 
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdfPREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
 
que son los planes de ordenamiento predial POP.pptx
que son los planes de ordenamiento predial  POP.pptxque son los planes de ordenamiento predial  POP.pptx
que son los planes de ordenamiento predial POP.pptx
 
El Teatro musical (qué es, cuál es su historia y trayectoria...)
El Teatro musical (qué es, cuál es su historia y trayectoria...)El Teatro musical (qué es, cuál es su historia y trayectoria...)
El Teatro musical (qué es, cuál es su historia y trayectoria...)
 
La importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresaLa importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresa
 
tipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicacióntipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicación
 
2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptx2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptx
 
SUNEDU - Superintendencia Nacional de Educación superior Universitaria
SUNEDU - Superintendencia Nacional de Educación superior UniversitariaSUNEDU - Superintendencia Nacional de Educación superior Universitaria
SUNEDU - Superintendencia Nacional de Educación superior Universitaria
 
HABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdfHABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdf
 
bases-cye-2024(2) una sola descarga en base de feria de
bases-cye-2024(2) una sola descarga en base de feria debases-cye-2024(2) una sola descarga en base de feria de
bases-cye-2024(2) una sola descarga en base de feria de
 
LA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derechoLA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derecho
 
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfREPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
 
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
 
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
 

Cassandra Meetup

  • 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
  • 10. Características RDD Tabla RDD Tabla Mapping de Filas de C* como Tuplas Guarda RDDs en C*(saveToCassandra) Soporta todos los Opos 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íOca del Histórico
  • 21. Interrelacionados Visualización BI Big Data AnalíOca NoSQL
  • 22. Interrelacionados Visualización BI Big Data AnalíOca NoSQL Conector de Datastax Spark + Cassandra
  • 24. Modelo de Datos C* //KeySpace CREATE KEYSPACE demoCMU WITH replicaOon = {'class': 'SimpleStrategy', 'replicaOon_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 , Opo 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.connecOon.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 // ExiOng paste mode, now interpreOng.
  • 26. Conexión al Conector sc.addJar("/opt/spark-­‐1.0.2/lib_unmanaged/libthriu-­‐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-­‐clientuOl-­‐2.0.9.jar") sc.addJar("/opt/spark-­‐1.0.2/lib_unmanaged/cassandra-­‐thriu-­‐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-­‐Ome-­‐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/hwpcore-­‐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/hwpclient-­‐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/newy-­‐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") // ExiOng paste mode, now interpreOng.
  • 33. MapReduce scala> :paste // Entering paste mode (ctrl-­‐D to finish) tableCMU.map(_.get[String]("genero")) .flatMap(_.split(" ")) .map((_,1)) .reduceByKey(_+_).toArray // ExiOng paste mode, now interpreOng. 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: hwps://github.com/datastax/spark-­‐cassandra-­‐connector/
  • 35. Una cosa más… @javituiter www.franciscojavierpulido.com
  • 36. Spark+Cassandra Streaming! val ssc = new StreamingContext(sparkConf, Seconds(1)) val lines = ssc.socketTextStream(serverIP, serverPort)
  • 37. Gracias @javituiter www.franciscojavierpulido.com Fuentes: hkhamm (GitHub) Pkolaczk Russel Spitzer (Datastax) MarOn Van Ryswyk (DataStax)