JAVA with Cassandra
maven项目,在pom.xml里加入依赖。不是的话下载相应的jar包放到lib目录下。
这里驱动包的版本要和你cassandra的大版本一致。 <dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.0.0</version>
</dependency>
新建一个类CassandraTest。
连接cassandra

1 public Cluster cluster;
2
3 public Session session;
4
5 public void connect()
6 {
7 // addContactPoints:cassandra节点ip withPort:cassandra节点端口 默认9042
8 // withCredentials:cassandra用户名密码 如果cassandra.yaml里authenticator:AllowAllAuthenticator 可以不用配置
9 cluster = Cluster.builder().addContactPoints("192.168.3.89").withPort(9042)
10 .withCredentials("cassandra", "cassandra").build();
11 session = cluster.connect();
12 }

驱动里自带了cassandra连接池的配置,将上面的稍作修改

1 public Cluster cluster;
2
3 public Session session;
4
5 public void connect()
6 {
7 PoolingOptions poolingOptions = new PoolingOptions();
8 // 每个连接的最大请求数 2.0的驱动好像没有这个方法
9 poolingOptions.setMaxRequestsPerConnection(HostDistance.LOCAL, 32);
10 // 表示和集群里的机器至少有2个连接 最多有4个连接
11 poolingOptions.setCoreConnectionsPerHost(HostDistance.LOCAL, 2).setMaxConnectionsPerHost(HostDistance.LOCAL, 4)
12 .setCoreConnectionsPerHost(HostDistance.REMOTE, 2).setMaxConnectionsPerHost(HostDistance.REMOTE, 4);
13
14 // addContactPoints:cassandra节点ip withPort:cassandra节点端口 默认9042
15 // withCredentials:cassandra用户名密码 如果cassandra.yaml里authenticator:AllowAllAuthenticator 可以不用配置
16 cluster = Cluster.builder().addContactPoints("192.168.3.89").withPort(9042)
17 .withCredentials("cassandra", "cassandra").withPoolingOptions(poolingOptions).build();
18 // 建立连接
19 // session = cluster.connect("test");连接已存在的键空间
20 session = cluster.connect();
21
22 }

创建键空间和表(这2个最好在搭建cassandra的时候完成)

1 /**
2 * 创建键空间
3 */
4 public void createKeyspace()
5 {
6 // 单数据中心 复制策略 :1
7 String cql = "CREATE KEYSPACE if not exists mydb WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}";
8 session.execute(cql);
9 }
10
11 /**
12 * 创建表
13 */
14 public void createTable()
15 {
16 // a,b为复合主键 a:分区键,b:集群键
17 String cql = "CREATE TABLE if not exists mydb.test (a text,b int,c text,d int,PRIMARY KEY (a, b))";
18 session.execute(cql);
19 }

对test表的CURD操作

1 /**
2 * 插入
3 */
4 public void insert()
5 {
6 String cql = "INSERT INTO mydb.test (a , b , c , d ) VALUES ( 'a2',4,'c2',6);";
7 session.execute(cql);
8 }
9
10 /**
11 * 修改
12 */
13 public void update()
14 {
15 // a,b是复合主键 所以条件都要带上,少一个都会报错,而且update不能修改主键的值,这应该和cassandra的存储方式有关
16 String cql = "UPDATE mydb.test SET d = 1234 WHERE a='aa' and b=2;";
17 // 也可以这样 cassandra插入的数据如果主键已经存在,其实就是更新操作
18 String cql2 = "INSERT INTO mydb.test (a,b,d) VALUES ( 'aa',2,1234);";
19 // cql 和 cql2 的执行效果其实是一样的
20 session.execute(cql);
21 }
22
23 /**
24 * 删除
25 */
26 public void delete()
27 {
28 // 删除一条记录里的单个字段 只能删除非主键,且要带上主键条件
29 String cql = "DELETE d FROM mydb.test WHERE a='aa' AND b=2;";
30 // 删除一张表里的一条或多条记录 条件里必须带上分区键
31 String cql2 = "DELETE FROM mydb.test WHERE a='aa';";
32 session.execute(cql);
33 session.execute(cql2);
34 }
35
36 /**
37 * 查询
38 */
39 public void query()
40 {
41 String cql = "SELECT * FROM mydb.test;";
42 String cql2 = "SELECT a,b,c,d FROM mydb.test;";
43
44 ResultSet resultSet = session.execute(cql);
45 System.out.print("这里是字段名:");
46 for (Definition definition : resultSet.getColumnDefinitions())
47 {
48 System.out.print(definition.getName() + " ");
49 }
50 System.out.println();
51 System.out.println(String.format("%s\t%s\t%s\t%s\t\n%s", "a", "b", "c", "d",
52 "--------------------------------------------------------------------------"));
53 for (Row row : resultSet)
54 {
55 System.out.println(String.format("%s\t%d\t%s\t%d\t", row.getString("a"), row.getInt("b"),
56 row.getString("c"), row.getInt("d")));
57 }
58 }

JAVA with Cassandra的更多相关文章
- JAVA操作cassandra数据库
如果是maven项目,在pom.xml里加入依赖.不是的话下载相应的jar包放到lib目录下.这里驱动包的版本要和你cassandra的大版本一致.我这里cassandra的版本是最新的3.9,驱动是 ...
- cassandra 之 jdbc 使用【java、scala】
1.数据库创建 参考接上文cassandra入门 http://www.cnblogs.com/piaolingzxh/p/4197833.html 2.下载jdbc驱动源码,构建jar包 源码下载地 ...
- cassandra高级操作之分页的java实现(有项目具体需求)
接着上篇博客,我们来谈谈java操作cassandra分页,需要注意的是这个分页与我们平时所做的页面分页是不同的,具体有啥不同,大家耐着性子往下看. 上篇博客讲到了cassandra的分页,相信大家会 ...
- 分布式 Key-Value 存储系统:Cassandra 入门
Apache Cassandra 是一套开源分布式 Key-Value 存储系统.它最初由 Facebook 开发,用于储存特别大的数据. Cassandra 不是一个数据库,它是一个混合型的非关系的 ...
- Cassandra issue - "The clustering keys ordering is wrong for @EmbeddedId"
在Java连接Cassandra的情况下, 当使用组合主键时, 默认第一个是Partition Key, 后续的均为Clustering Key. 如果有多个Clustering Key, 在Java ...
- cassandra简单介绍与基本操作
项目中用到了cassandra,用来存储海量数据,且要有高效的查询:本博客就进行简单的介绍和进行一些基本的操作 一.使用场景: 是一款分布式的结构化数据存储方案(NoSql数据库),存储结构比Key- ...
- 从Stage角度看cassandra write
声明 文章发布于CSDN cassandra concurrent 具体实现 cassandra并发技术文中介绍了java的concurrent实现,这里介绍cassandra如何基于java实现ca ...
- NoSql Cassandra
我们为什么要使用NOSQL非关系数据库? 随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速.而传统的关系数据库在应付web2.0网站,特别 ...
- 转】在Ubuntu中安装Cassandra
原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/ 感谢! Posted: Mar 22, 2014 Tags: cas ...
随机推荐
- LeetCode OJ--Construct Binary Tree from Preorder and Inorder Traversal *
http://oj.leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ 根据二叉树的前序遍 ...
- 搭建vue-cli时候报错处理
最近在使用vue-cli搭建目录时出现 “webpack-dev-server不是内部或外部命令,也不是可运行的程序 或批处理文件”情况 在网上查了不少资料和解决方法后,结合自己的情况应该是环境变量的 ...
- JVM, JRE 和JDK
JVM -- java virtual machine A Java virtual machine (JVM) is a process virtual machine that can execu ...
- RabbitMQ 核心概念
目录 RabbitMQ 特点 AMQP 协议 RabbitMQ 消息传递机制 Message Exchange 1. 简介 2. 类型 3. 属性 RabbitMQ 特点 RabbitMQ 相较于其他 ...
- php curl xml传输和转换
<?php /** * API * User: sgfoot * Date: 2017/3/20 * Time: 18:05 */ class apiCurl { private $config ...
- c++ concurrency serial 1: introduction
platform: vs2012 Code#include <iostream> #include <thread> using namespace std; void Fun ...
- SVN服务器配置说明 【转】
http://www.cnblogs.com/ricksun/articles/1564905.html 1.前 言 花了72小时,终于把 Subversion 初步掌握了.从一个连“什么是版本控制” ...
- Eclipse 教程
Eclipse 教程 Eclipse 是一个开放源代码的.基于 Java 的可扩展开发平台. Eclipse 是 Java 的集成开发环境(IDE),当然 Eclipse 也可以作为其他开发语言的集成 ...
- flexible.js + makegrid.js 自适应布局
一,flexible.js 的使用方式: (一),引用方式 1,引用cdn地址 <script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3. ...
- 纯JS设置首页,增加收藏,获取URL參数,解决中文乱码
雪影工作室版权全部,转载请注明[http://blog.csdn.net/lina791211] 1.前言 纯Javascript 设置首页,增加收藏. 2.设置首页 // 设置为主页 functio ...