Translate
lunes, 9 de julio de 2018
Apache Spark MLlib parte 3
Continuamos...
La detección de fraude es otro caso de uso importante del aprendizaje automático. Aborda un problema crítico en la industria financiera de forma rápida y precisa.
Las organizaciones de servicios financieros solo tienen unos cientos de milisegundos para determinar si una transacción en línea en particular es legítima o es un fraude.
Las técnicas de redes neuronales se utilizan para la detección de fraudes en puntos de venta (POS). Las organizaciones como PayPal utilizan diferentes tipos de algoritmos de aprendizaje automático para la gestión de riesgos, como la red lineal, neuronal y el aprendizaje profundo.
La biblioteca Spark MLlib proporciona varios algoritmos para resolver este caso de uso, incluidos SVM lineales, regresión logística, árboles de decisión y Bayes sencillos. Los modelos de conjunto (que combinan las predicciones de un conjunto de modelos) como los bosques aleatorios o los árboles que aumentan el gradiente también están disponibles …
MLlib es la biblioteca de aprendizaje automático de Spark. Su objetivo es hacer que el aprendizaje automático práctico sea escalable y fácil. Consiste en algoritmos y utilidades de aprendizaje comunes, que incluyen clasificación, regresión, clustering, filtrado colaborativo, reducción de dimensionalidad y primitivas de optimización de nivel inferior y API de canalizaciones de nivel superior.
Como aprendimos anteriormente, hay dos formas de utilizar la API de Aprendizaje Automático de Spark: Spark MLlib y spark.ml.
La API Spark MLlib está disponible en los lenguajes de programación Scala, Java y Python.
Continuara...
Apache Spark MLlib parte 2
Continuamos!!
Cuando se trabaja en
proyectos de aprendizaje automático la preparación de datos, la
limpieza y el análisis, también son tareas importantes más allá
de los modelos de aprendizaje reales y los algoritmos utilizados para
resolver los problemas de negocios.
Los siguientes son
los pasos que se realizan en un programa típico de aprendizaje
automático:
Caracterización
(featurization) del modelo.
entrenar el modelo.
evaluación modelo.
Es importante saber
que se debe limpiar y preparar los datos antes de ejecutar un
algoritmo de aprendizaje automático, de lo contrario el patrón
resultante no será preciso ni útil, y puede pasar por alto algunas
anomalías.
La calidad de los
datos de entrenamiento que proporcionamos a los programas de
aprendizaje automático también juega un papel fundamental en los
resultados de predicción. Si los datos de entrenamiento no son lo
suficientemente aleatorios, los patrones resultantes no serán
precisos. Y si el conjunto de datos es demasiado pequeño, el
programa de aprendizaje automático puede dar predicciones inexactas.
Los casos de uso
comerciales para aprendizaje automático abarcan diferentes dominios
y escenarios, incluidos motores de recomendación (como este motor de
recomendación de alimentos), análisis predictivo (por ejemplo,
predicción de precios de acciones o retrasos en los vuelos),
publicidad dirigida, detección de fraude, reconocimiento de imágenes
y videos -conducir automóviles y otras formas de inteligencia
artificial.
Veamos dos
aplicaciones populares, un motor de recomendación y detección de
fraude, en más detalle.
Los motores de
recomendación utilizan los atributos de un elemento o un usuario o
el comportamiento de un usuario o sus compañeros para hacer
predicciones. Diferentes factores impulsan un motor de recomendación
eficaz. Algunos de estos factores incluyen:
- análisis por pares.
- comportamiento del cliente.
- ofertas u ofertas corporativas.
- agrupamiento de elementos.
- factores de mercado / tienda.
Podemos construir un
motor de recomendación mediante la participación de dos algoritmos:
filtrado basado en contenido y filtrado colaborativo.
El filtrado basado
en contenido se basa en cuán similares son el uso y las
calificaciones de un artículo en particular a otros artículos. El
modelo usa los atributos de contenido de los elementos (como
categorías, etiquetas, descripciones y otros datos) para generar una
matriz que relacione cada elemento con otros elementos y calcule la
similitud en función de las clasificaciones proporcionadas. Luego,
los elementos más similares se enumeran junto con un puntaje de
similitud. Los artículos con el puntaje más alto son los más
similares.
La recomendación de
la película es un buen ejemplo de este modelo. Puede aconsejar que a
los usuarios a los que les haya gustado una película en particular
también les hayan gustado estas otras películas.
El filtrado basado
en contenido no tiene en cuenta el comportamiento general de otros
usuarios, por lo que sus modelos no ofrecen recomendaciones
personalizadas, como el filtrado colaborativo y otros modelos.
Por otro lado, los
modelos de filtrado colaborativo predicen y recomiendan elementos
específicos o usuarios en función de la similitud con otros
elementos o usuarios.
El filtro aplica
ponderaciones basadas en las preferencias del "usuario par".
La suposición es que los usuarios con perfiles o comportamientos
similares también tendrán preferencias de elementos similares.
Un ejemplo de este
modelo son las recomendaciones sobre sitios web de comercio
electrónico como Amazon. Cuando buscamos un artículo en el sitio
web, vemos una lista llamada "Los clientes que vieron este
artículo también compraron".
Los elementos con el
puntaje de recomendación más alto son los más relevantes para el
usuario en contexto.
Las soluciones de
filtrado colaborativo funcionan mejor que otros modelos. Spark MLlib
implementa un algoritmo de filtrado colaborativo llamado Alternating
least squares (ALS). Hay dos variaciones de las entradas en el
filtrado colaborativo, llamadas realimentación explícita e
implícita.
La retroalimentación
explícita se basa en las preferencias directas otorgadas por el
usuario al elemento (como una película). La retroalimentación
explícita es agradable, pero muchas veces es sesgada porque los
usuarios a quienes les gusta o no les gusta mucho un producto tienden
a opinar con más frecuencia que los que les es indiferente. Por lo
tanto podemos no obtener la opinión de muchas personas en el centro
de la curva.
La retroalimentación
implícita incluye las vistas del usuario, los clics, los "me
gusta", etc. La retroalimentación implícita a menudo se
utiliza para el análisis predictivo debido a lo fácil que es
recopilar este tipo de datos.
También hay métodos
basados en modelos para motores de recomendación. A menudo
incorporan métodos de filtrado colaborativo y basado en contenido.
Un enfoque basado en modelos obtiene lo mejor de ambos mundos: el
poder y el rendimiento del filtrado colaborativo y la flexibilidad y
adaptabilidad del filtrado basado en el contenido. Las técnicas de
aprendizaje profundo o deep learning son buenos ejemplos de este
modelo.
También puede
integrar otros algoritmos como k-means clustering en el motor de
recomendación para refinar aún más las predicciones. El algoritmo
k-means funciona al dividir N observaciones en k clústeres en los
que cada observación pertenece al clúster con la media más
cercana. Usando la técnica de k-means, podemos encontrar elementos
similares o usuarios en función de sus atributos.
continuará...
domingo, 8 de julio de 2018
Apache Spark MLlib
Apache Spark Mllib incluye diferentes algoritmos de Machine Learning. Estas librerías se encuentran en 2 paquetes : spark.mllib y spark.ml
spark.mllib contiene la API original de spark construida sobre RDDs. Estos algoritmos incluyen correlación, clasificación y regresión, filtrado colaborativo, clustering y reducción de dimensionalidad.
spark.ml contiene la API construida sobre Dataframes, el cual es el core de Spark SQL. Esto puede ser utilizado para hacer una tubería de maching learning, es decir combinar técnicas o limpiar los datos y luego procesarlos. Este paquete provee: selectores, transformadores, extractores y técnicas de maching learning como clasificación, regresión y clustering.
La ciencia de datos o Data science es la disciplina que extraer el conocimiento de grandes conjuntos de datos (estructurados o no estructurados) para proporcionar información a los equipos de negocios e influir en las estrategias comerciales. El papel del científico de datos es resolver problemas que no son fáciles de resolver utilizando los métodos numéricos tradicionales. Normalmente estos cientificos de datos utilizan modelos de aprendizaje automático.
Existen diferentes tipos de modelos de aprendizaje automático:
spark.mllib contiene la API original de spark construida sobre RDDs. Estos algoritmos incluyen correlación, clasificación y regresión, filtrado colaborativo, clustering y reducción de dimensionalidad.
spark.ml contiene la API construida sobre Dataframes, el cual es el core de Spark SQL. Esto puede ser utilizado para hacer una tubería de maching learning, es decir combinar técnicas o limpiar los datos y luego procesarlos. Este paquete provee: selectores, transformadores, extractores y técnicas de maching learning como clasificación, regresión y clustering.
La ciencia de datos o Data science es la disciplina que extraer el conocimiento de grandes conjuntos de datos (estructurados o no estructurados) para proporcionar información a los equipos de negocios e influir en las estrategias comerciales. El papel del científico de datos es resolver problemas que no son fáciles de resolver utilizando los métodos numéricos tradicionales. Normalmente estos cientificos de datos utilizan modelos de aprendizaje automático.
Existen diferentes tipos de modelos de aprendizaje automático:
- aprendizaje supervisado,
- aprendizaje sin supervisión,
- aprendizaje semi-supervisado
- aprendizaje reforzado.
- Naive Bayes es un algoritmo de aprendizaje supervisado utilizado para la clasificación. Se basa en la aplicación del teorema de Bayes y un conjunto de suposiciones de independencia condicional.
- El algoritmo k-means o k-means clustering crea k grupos a partir de un conjunto de objetos para que los miembros de cada grupo sean más similares entre sí.
- Una máquina de vectores de soporte (SVM) es un algoritmo de aprendizaje supervisado que se utiliza para encontrar el límite que separa las clases por un margen tan amplio como sea posible. Dado un conjunto de ejemplos de entrenamiento, cada uno marcado como perteneciente a una de dos categorías, un algoritmo de entrenamiento SVM construye un modelo que asigna nuevos ejemplos en una categoría u otra. Las aplicaciones de SVM incluyen bioinformática, análisis de texto y reconocimiento de imágenes.
- Los árboles de decisión se utilizan en muchos tipos de problemas de aprendizaje automático, incluida la clasificación multiclase. Spark MLlib es compatible tanto con un algoritmo de árbol de decisión básico como con conjuntos de árboles. Hay dos algoritmos de conjunto disponibles: árboles con gradiente mejorado y bosques aleatorios.
Como una primer vistazo, esta bien hasta aquí, pero debemos seguir en próximos posts, es decir :
continuará...
sábado, 7 de julio de 2018
Por qué Wikipedia se "apagó"?
Wikipedia se "apagó" para sumarse a las protestas contra una reforma que atentaba contra la libre difusión de la información en internet.
Casi muero por este apagón!!
Todos debemos apoyar estas medidas de forma que internet sea el hermoso lugar que es.
Casi muero por este apagón!!
Todos debemos apoyar estas medidas de forma que internet sea el hermoso lugar que es.
jueves, 5 de julio de 2018
Machine Learning Yearning
Sigo publicando Machine Learning Yearning:
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
|
martes, 3 de julio de 2018
DATASTAX ACADEMY
Quiero recomendar los cursos gratuitos de Datastax que es la pata comercial de Apache Cassandra.
Como podrán imaginar los cursos son sobre Cassandra y Big data. Hay curso iniciales, de modelado, de arquitectura, etc. a la vez existe un curso de integración con Apache Spark.
Los cursos son gratuitos, lo único malo es que en los cursos te quieren vender sus productos comerciales, pero bueno de algo tienen que vivir pobre gente.
Sin más dejo link: https://academy.datastax.com/
domingo, 1 de julio de 2018
Verificando nuestro entorno Cassandra con cqlsh
Como vimos anteriormente Cassandra tiene un aplicativo llamado cqlsh para ejecutar cql.
Esta herramienta nos permite conocer también características del entorno, por ejemplo si queremos obtener información de nuestro cluster podemos escribir:
cqlsh> DESCRIBE CLUSTER;
Cluster: Test Cluster
Partitioner: Murmur3Partitioner
De la misma forma podemos verificar información del keyspace:
cqlsh> DESCRIBE KEYSPACES;
hexacta system_schema system_auth system system_distributed system_traces
cqlsh> SHOW VERSION;
[cqlsh 5.0.1 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4]
y si necesitamos ayuda:
cqlsh> help
Documented shell commands:
===========================
CAPTURE CLS COPY DESCRIBE EXPAND LOGIN SERIAL SOURCE UNICODE
CLEAR CONSISTENCY DESC EXIT HELP PAGING SHOW TRACING
CQL help topics:
================
AGGREGATES CREATE_KEYSPACE DROP_TRIGGER TEXT
ALTER_KEYSPACE CREATE_MATERIALIZED_VIEW DROP_TYPE TIME
ALTER_MATERIALIZED_VIEW CREATE_ROLE DROP_USER TIMESTAMP
ALTER_TABLE CREATE_TABLE FUNCTIONS TRUNCATE
ALTER_TYPE CREATE_TRIGGER GRANT TYPES
ALTER_USER CREATE_TYPE INSERT UPDATE
APPLY CREATE_USER INSERT_JSON USE
ASCII DATE INT UUID
BATCH DELETE JSON
BEGIN DROP_AGGREGATE KEYWORDS
BLOB DROP_COLUMNFAMILY LIST_PERMISSIONS
BOOLEAN DROP_FUNCTION LIST_ROLES
COUNTER DROP_INDEX LIST_USERS
CREATE_AGGREGATE DROP_KEYSPACE PERMISSIONS
CREATE_COLUMNFAMILY DROP_MATERIALIZED_VIEW REVOKE
CREATE_FUNCTION DROP_ROLE SELECT
CREATE_INDEX DROP_TABLE SELECT_JSON
Apache Cassandra es bueno para mi proyecto?
Como venimos viendo en este blog, Cassandra es genial. Una herramienta súper performante y muy configurable, pero Cassandra no es para todos los proyectos, ni la solución a todos los casos de usos.
- Primera regla: Si es necesario una base de datos que corra en un solo nodo, elegir Cassandra no tiene mucho sentido. La potencia de Cassandra yace en poder correr en varios nodos. Si es necesario tener una base de datos en varios nodos, Cassandra podría ser una buena opción. Si se espera que su aplicación requiera docenas de nodos, Cassandra podría ser una excelente opción.
- Segunda regla: Piense su aplicación desde la perspectiva de la relación de lecturas a escrituras. Cassandra está optimizado para un rendimiento excelente en las escrituras. Por lo tanto si tenemos que solo leer, Cassandra no es muy buena.
- Tercera regla: Cassandra no es bueno para hacer Data warehouse, es decir meto datos y luego veo como los consulto. En cassandra tiene que ser planteado como vamos a consultar los datos del día uno.
Cassandra se ha utilizado para crear una variedad de aplicaciones, incluida una tienda , un índice invertido para la búsqueda de documentos y una cola de prioridad de trabajo distribuida.
Cassandra tiene soporte listo para usar para la distribución geográfica de datos. Puede configurar fácilmente Cassandra para replicar datos en múltiples centros de datos. Si tiene una aplicación desplegada a nivel mundial que podría ver un beneficio en el rendimiento al poner los datos cerca del usuario, Cassandra podría ser una gran opción.
Si su aplicación está evolucionando rápidamente y está en el "modo de inicio", Cassandra podría ser una buena opción dado su compatibilidad con esquemas flexibles. Hace que sea fácil mantener base de datos al día con los cambios de la aplicación a medida que se implementa rápidamente.
jueves, 28 de junio de 2018
Cassandra una base Row-oriented de esquema flexible
El modelo de datos de Cassandra puede ser definido como Row-oriented o orientado a filas con particiones. En el que los datos se almacenan en tablas hash multidimensionales dispersas. Esto significa que para cualquier fila determinada puede tener una o más columnas, pero no es necesario que cada fila tenga todas las mismas columnas que otras filas (como el modelo relacional).
Particionado significa que cada fila tiene una clave única que hace que sus datos sean accesibles, y las claves se utilizan para distribuir las filas en múltiples almacenes de datos.
En el modelo de almacenamiento relacional, todas las columnas de una tabla se definen de antemano y se asigna espacio para cada columna, ya sea que esté poblada o no. Por el contrario, Cassandra almacena datos en una tabla hash multidimensional y ordenada. Como los datos se almacenan en cada columna, se almacenan como una entrada separada en la tabla hash. Los valores de las columnas se almacenan de acuerdo con un orden de clasificación coherente, omitiendo las columnas que no están rellenas, lo que permite un procesamiento de consulta y almacenamiento más eficiente.
En sus primeras versiones. Cassandra fue fiel al documento original de Bigtable al admitir un modelo de datos "sin esquema" en el que las nuevas columnas se pueden definir dinámicamente. Las bases de datos libres de esquemas, como Bigtable y MongoDB, tienen la ventaja de ser muy extensibles y de gran rendimiento para acceder a grandes cantidades de datos. El mayor inconveniente de las bases de datos sin esquema es la dificultad para determinar el significado y el formato de los datos, lo que limita la capacidad de realizar consultas complejas. Estas desventajas resultaron una barrera para la adopción para muchos, especialmente como proyectos de inicio que se beneficiaron de la flexibilidad inicial madurada en empresas más complejas que involucran a múltiples desarrolladores y administradores.
La solución para esos usuarios fue la introducción del Lenguaje de Consulta de Cassandra (CQL), que proporciona una forma de definir el esquema a través de una sintaxis similar al Lenguaje de Consulta Estructurado (SQL) familiar para aquellos que provienen de un fondo relacional. Inicialmente, se proporcionó CQL como otra interfaz para Cassandra junto con la interfaz libre de esquemas basada en el proyecto Apache Thrift. Durante esta fase de transición, el término "Esquema-opcional" se usó para describir que los modelos de datos podrían definirse por esquema usando CQL, pero también podrían extenderse dinámicamente para agregar nuevas columnas a través de la API . Durante este período, el almacenamiento de datos subyacente continuó basándose en el modelo Bigtable.
Entonces, quizás la mejor manera de describir la postura actual de Cassandra es que admite un "esquema flexible".
Como estamos los desarrolladores en 2018 ?
Jetbrains es una empresa que me interesa muchisimo, marco un camino donde parecía que no lo había. Y ahora esta empresa a compartido los resultados de su encuesta anual.
Sin más dejo el link:
https://www.jetbrains.com/research/devecosystem-2018/
martes, 26 de junio de 2018
Machine Learning Yearning
Sigo publicando Machine Learning Yearning:
| ||||||||||||||||||||||||
| ||||||||||||||||||||||||
|
lunes, 25 de junio de 2018
Modelado de datos en Cassandra
Me puse a estudiar un poco el modelado de datos en cassandra y no entendi mucho, me faltaban algunos conceptos. Por lo tanto y para ordenar un poco el asunto, empecemos definiendo algunas cosas:
Primary Key : Similar al concepto de primary key de las bases relacionales, cada fila se hace referencia mediante una clave principal. Hay varias columnas en una fila, pero el número de columnas puede variar en diferentes filas.
Compound Primary Key: Como su nombre lo sugiere, una clave primaria compuesta se compone de una o más columnas a las que se hace referencia en la clave principal. Un componente de la clave primaria compuesta se llama clave de partición, mientras que el otro componente se llama clave de agrupamiento.
Partition Key: El objetivo de una clave de partición es identificar la partición o el nodo en el clúster que almacena esa fila. Cuando se leen o escriben datos desde el clúster, se usa una función llamada Particionador para calcular el valor hash de la clave de partición. Este valor hash se usa para determinar el nodo / partición que contiene esa fila. Por ejemplo, las filas cuyos valores de clave de partición oscilan entre 1000 y 1234 pueden residir en el nodo A, y las filas con valores de clave de partición comprendidos entre 1235 y 2000 pueden residir en el nodo B. Si una fila contiene una clave de partición cuyo hash el valor es 1233 se almacenará en el nodo A.
Clustering Key: El objetivo de la clave de agrupamiento es almacenar datos de fila en un orden. La clasificación de los datos se basa en columnas, que se incluyen en la clave de agrupamiento. Esta disposición hace que sea eficiente recuperar datos usando la clave de agrupamiento.
Para aclarar conceptos vamos a hacer un ejemplo, vamos a utilizar cqlsh :
Primero hacemos el keyspace que es similar al concepto de base de datos de las bases relacionales :
create keyspace Students_Details with replication = {‘class’ : ‘SimpleStrategy’, ‘replication_factor’:1};
elegimos esta base:
use students_details;
creamos una tabla alumno:
create table student (stuid int, avg_marks float, description text,
primary key (stuid));
Insertamos 2 estudiantes :
insert into student (stuid, avg_marks, description) values (1,25.5,’student 1′);
insert into student (stuid, avg_marks, description) values (2,35.5,’student 2′);
podemos revisar los datos con :
select * from student;
Podemos ver en el resultado anterior que stuid se ha convertido en la clave de fila e identifica las filas individuales.
select token(stuid) from student;
Ahora crearemos otra tabla llamada marks, que registra las calificaciones de cada estudiante todos los días (por ejemplo, todos los días, se registran los exámenes y las calificaciones). Escriba el siguiente comando en cqlsh:
create table marks(stuid int,exam_date timestamp,marks float, exam_name text,
primary key (stuid,exam_date));
Esta declaración crea la tabla marks con una clave principal (stuid, fecha_ejemplo). Como la clave principal tiene dos componentes, el primer componente se considera una clave de partición, y el segundo componente se convierte en la clave del clúster.
Agregamos algunos datos en la tabla:
insert into marks(stuid ,exam_date ,marks ,exam_name) values (1,’2016-11-10′,76 ,’examA’);
insert into marks(stuid ,exam_date ,marks ,exam_name) values (1,’2016-11-11′,90 ,’examB’);
insert into marks(stuid ,exam_date ,marks ,exam_name) values (1,’2016-11-12′,68 ,’examC’);
Ahora, veamos cómo se ha aplicado el concepto de partición:
select token(stuid) from marks;
Podemos ver que las tres filas tienen el mismo token de partición, por lo tanto, Cassandra almacena solo una fila para cada clave de partición. Todos los datos asociados con esa clave de partición se almacenan como columnas en el almacén de datos. Los datos que hemos almacenado a través de tres instrucciones de inserción diferentes tienen el mismo valor de stuid, es decir, 1, por lo tanto, todos los datos se guardan en esa fila como columnas, es decir, bajo una partición.
El segundo componente de una clave primaria se llama clave de agrupamiento. El rol de la clave de agrupamiento es agrupar elementos relacionados. Todos los datos que se insertan con la misma clave de agrupamiento se agrupan.
Pufff, espero que haya quedado claro.
Dejo link:
domingo, 24 de junio de 2018
viernes, 22 de junio de 2018
Instalando un cluster de Cassandra
Ahora vamos a instalar varios nodos de Cassandra, 3 para ser exactos.
Ingredientes:
- Muchos servidores (en este caso 3)
- apache-cassandra-3.11.x
Antes de empezar vamos a tener que instalar Cassandra en cada uno de los nodos como lo indicamos aquí. Y luego los nodos se pueden ver (debemos bajar firewall) o cualquier cosa que puede interferir en la comunicación.
Bajamos los nodos de Cassandra (en el caso que lo hayamos levantado). Ojo si subimos los nodos vamos a tener que borrar el contenido de las carpetas:
/data/data/system
/data/commitlog
Ahora debemos editar el archivo Cassandra.yaml que esta en conf :
cluster_name: El nombre del cluste (y si!)
seeds: acá le metemos los nombres o las ips de los servidores separados por coma.
listen_address: es la ip con que nuestro servidor se hace conocido, por defecto esta localhost, pero tenemos que poner la ip del servidor.
rpc_address: similar a listen_address, va la ip del servidor. Esta es la dirección IP para llamadas de procedimiento remoto.
endpoint_snitch: es el modo en que casandra se entera de los nuevos servidores o servidores caidos. Le debemos poner : GossipingPropertyFileSnitch
auto_bootstrap: Esta directiva no está en el archivo de configuración, por lo que debe agregarse y establecerse en falso. Esto hace que los nuevos nodos utilicen automáticamente los datos correctos. Es opcional si agrega nodos a un cluster existente, pero es necesario cuando está inicializando un cluster nuevo, es decir, uno sin datos.
Y listo!
Vamos levantando los nodos. Para probar el cluster utilizamos la herramienta nodetool de esta manera :
$ nodetool status
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 192.168.0.105 190.31 KiB 256 64,9% 667fc687-3ef7-4470-af47-c72e328f33c8 rack1
UN 192.168.0.108 133.77 KiB 256 65,0% 72d61827-9b4b-415c-9fdc-43426452f087 rack1
UN 192.168.0.102 165.93 KiB 256 70,1% f4d7357c-2bf5-4bd1-bae9-c63ab0a02c3f rack1
Y si esto funciona, ya tenemos nuestro cluster.
miércoles, 20 de junio de 2018
Hacer un cliente Java que se conecte con Apache Cassandra.
Vamos a hacer un cliente java para conectarnos con Cassandra con Apache Maven.
Creemos un proyecto común con maven:
mvn -B archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.tuCompania.example -DartifactId=cassandra-client
De esta manera creamos el proyecto. Ahora necesitamos las librerías clientes de Cassandra, vamos a utilizar las que provee datastax, agregando la siguiente entrada en el pom.xml :
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.5.0</version>
</dependency>
Y bueno, ahora hacemos:
mvn clean install
Y podemos escribir nuestro código:
package com.tuCompania.example;
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
public class App
{
public static void main( String[] args ) {
Cluster cluster = null;
try {
cluster = Cluster.builder()
.addContactPoint("127.0.0.1") //ip de cassandra
.build();
Session session = cluster.connect();
ResultSet rs = session.execute("select release_version from system.local");
Row row = rs.one();
System.out.println(row.getString("release_version"));
}finally {
if (cluster != null) cluster.close();
}
}
}
Para conectarnos a Cassandra necesitamos un cluster (dado que Cassandra fue pensado para correr en varios servidores) y con el cluster obtenemos una conexión y luego una sesión y con esta sesión podemos hacer una consulta (en el ejemplo consultamos la versión de Cassandra) y esto nos retorna un Resulset (que es similar a el Resultset de jdbc) y listo!
Suscribirse a:
Entradas (Atom)