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的更多相关文章

  1. JAVA操作cassandra数据库

    如果是maven项目,在pom.xml里加入依赖.不是的话下载相应的jar包放到lib目录下.这里驱动包的版本要和你cassandra的大版本一致.我这里cassandra的版本是最新的3.9,驱动是 ...

  2. cassandra 之 jdbc 使用【java、scala】

    1.数据库创建 参考接上文cassandra入门 http://www.cnblogs.com/piaolingzxh/p/4197833.html 2.下载jdbc驱动源码,构建jar包 源码下载地 ...

  3. cassandra高级操作之分页的java实现(有项目具体需求)

    接着上篇博客,我们来谈谈java操作cassandra分页,需要注意的是这个分页与我们平时所做的页面分页是不同的,具体有啥不同,大家耐着性子往下看. 上篇博客讲到了cassandra的分页,相信大家会 ...

  4. 分布式 Key-Value 存储系统:Cassandra 入门

    Apache Cassandra 是一套开源分布式 Key-Value 存储系统.它最初由 Facebook 开发,用于储存特别大的数据. Cassandra 不是一个数据库,它是一个混合型的非关系的 ...

  5. Cassandra issue - "The clustering keys ordering is wrong for @EmbeddedId"

    在Java连接Cassandra的情况下, 当使用组合主键时, 默认第一个是Partition Key, 后续的均为Clustering Key. 如果有多个Clustering Key, 在Java ...

  6. cassandra简单介绍与基本操作

    项目中用到了cassandra,用来存储海量数据,且要有高效的查询:本博客就进行简单的介绍和进行一些基本的操作 一.使用场景: 是一款分布式的结构化数据存储方案(NoSql数据库),存储结构比Key- ...

  7. 从Stage角度看cassandra write

    声明 文章发布于CSDN cassandra concurrent 具体实现 cassandra并发技术文中介绍了java的concurrent实现,这里介绍cassandra如何基于java实现ca ...

  8. NoSql Cassandra

    我们为什么要使用NOSQL非关系数据库? 随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速.而传统的关系数据库在应付web2.0网站,特别 ...

  9. 转】在Ubuntu中安装Cassandra

    原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/ 感谢! Posted: Mar 22, 2014 Tags: cas ...

随机推荐

  1. U3D层的运用

    在操作 LayerMask 时常令一些初学者摸不着头脑下面简单说一下层的开关方法:1.首先引入'|'.'&'.'~'的概念与(交集):10000001 & 10000100 == 10 ...

  2. react-1 react需要的环境配置

    一.nodeJs简介和安装 1. 官网 https://nodejs.org/en/         NPM https://www.npmjs.com/ 2.检查安装成功的命令 node -v np ...

  3. python 之 线程池实现并发

    使用线程池实现高IO并发 模块:ThreadPoolExecutor, as_completed 测试代码如下: #!/opt/python3/bin/python3 from concurrent. ...

  4. jquery 全选获取值

    首选区分一下prop与attr的差别.prop是固有属性,attr自定义属性. $("#all").click(function () {//全选.反选 if(this.check ...

  5. 动态加载/删除css文件以及图片预加载

    动态加载/删除css文件以及图片预加载   功能模块页面   最近,工作中遇到了一个比较奇葩的需求:要在一个页面(PC端)增加一个功能模块,但是这个页面在不久之后要重构,为了新增加的模块可以继续复用, ...

  6. 利用NSString的Hash方法比较字符串

    实际编程总会涉及到比较两个字符串的内容,一般会用 [string1 isEqualsToString:string2] 来比较两个字符串是否一致.对于字符串的isEqualsToString方法,需要 ...

  7. 阿里云云服务器ubuntu配置nginx+uwsgi+django记录文档

    1 安装ssh 1  sudo apt-get update 2  sudo apt-get install openssh-server 3  sudo ps -e |grep ssh  有sshd ...

  8. zerorpc的安装

    1.简介及安装 rpc使构建分布式系统简单许多,在云计算的实现中有很广泛的应用 rpc可以是异步的 python实现rpc,可以使用标准库里的SimpleXMLRPCServer,另外zerorpc是 ...

  9. SWF代码分析与破解之路 (YueTai VIP视频信息获取工具) Socket续篇

    引言 上一篇 <Socket与站点保密应用 (隐藏链接的视频下载)>大大咧咧地从 WEB 讲 Socket.再到 TCP/IP 等协议,又再讲到 Wireshark 怎样抓IP包分析.最还 ...

  10. UVA571 - Jugs(数论)

    UVA571 - Jugs(数论) 题目链接 题目大意:给你A和B的水杯.给你三种操作:fill X:把X杯里面加满水.empty X:把X杯中的水清空.pour X Y 把X的水倒入Y中直到一方满或 ...