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 ...
随机推荐
- 正确使用‘trap指令’实现Docker优雅退出
一般应用(比如mariadb)都会有一个退出命令,用户使用类似systemctl stop ****.service方法,停止其服务时,systemd会调用其配置文件注册的退出命令,该命令执行清理资源 ...
- C#中IPAddress类/Dns类/IPHostEntry类/IPEndPoint用法简介
C#中IPAddress类/Dns类/IPHostEntry类/IPEndPoint用法简介 IP是一种普遍应用于因特网.允许不同主机能够相互找到对方的寻址协议.IP地址由4个十进制的数字号码所组成, ...
- 深入理解js中的立即执行函数(function(){…})()
javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解. ( f ...
- [Machine Learning with Python] Familiar with Your Data
Here I list some useful functions in Python to get familiar with your data. As an example, we load a ...
- k8s之ingress及ingress controller
1.ingress概述 图解:第一个service起到的作用是:引入外部流量,也可以不用此方式,以DaemonSet控制器的方式让Pod共享节点网络,第二个service的作用是:对后端pod分组,不 ...
- Django-自己写的py文件调用models&Non-ASCII character报错&url接收参数
1.这个设置是网上能查到的最多的,但是没解决我的问题: Django的models.py在外部独立使用,新建一个文件夹,和monitor1目录平级 import sys,os sys.path.app ...
- spring事物,在service层如果进行了异常处理,则不会回滚
今天进行了事物处理的验证,发现如果在在service层如果进行了异常处理,则不会回滚. 看来异常的处理还是统一放在controller层比较好,service如果是查询方法,出现了异常,就不要做处理了 ...
- 管理SQL Server监控
http://blog.csdn.net/DBA_Huangzj/article/category/1133081 http://www.cnblogs.com/bhtfg538/archive/20 ...
- python2.7升python3.2
1. 安装python3.2 sudo apt-get install python3.2 2. 删除usr/bin/目录下的默认python link文件. cd /usr/bin sudo ...
- ui develop
https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/DesigningaUserInt ...