cassandra学习笔记三
这里我们开始使用JAVA来操作cassandra数据库,而不仅限于客户端操作。关于客户端cassandra-cli和nodetool的操作,在命令行使用help命令可以获取很多帮助。
我使用的是thrift来操作数据库,这是一种较低级的方法,它直接使用最基本的API。尽管有更高级的方式来操作,但熟悉API依然是必须的,因此我们先使用thrift。
首先要在JAVA里导入包,在MyEclipse里右键工程名,选择properties,进入JavaBuildPath->Libraries,选择AddExternalJars,导入:
Apache-cassandra-1.0.8.jar
Apache-cassandra-thrift-1.0.8.jar
libthrift-0.6.jar
log4j-1.2.16.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar
这些JAR包都在canssandra目录下的lib文件夹内。
下面是测试代码:
package cassandra;import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.util.List;import org.apache.cassandra.thrift.Cassandra;
import org.apache.cassandra.thrift.Column;
import org.apache.cassandra.thrift.ColumnOrSuperColumn;
import org.apache.cassandra.thrift.ColumnParent;
import org.apache.cassandra.thrift.ColumnPath;
import org.apache.cassandra.thrift.ConsistencyLevel;
import org.apache.cassandra.thrift.InvalidRequestException;
import org.apache.cassandra.thrift.NotFoundException;
import org.apache.cassandra.thrift.SlicePredicate;
import org.apache.cassandra.thrift.SliceRange;
import org.apache.cassandra.thrift.TBinaryProtocol;
import org.apache.cassandra.thrift.TimedOutException;
import org.apache.cassandra.thrift.UnavailableException;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TFramedTransport;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;public class TestClient
{public static void main(String[] args)throws TException, InvalidRequestException, UnavailableException, UnsupportedEncodingException,NotFoundException, TimedOutException{//包装好的socketTTransport tr = new TFramedTransport(new TSocket("127.0.0.1",9160));TProtocol proto = new TBinaryProtocol(tr);Cassandra.Client client = new Cassandra.Client(proto);tr.open();if(!tr.isOpen()){System.out.println("failed to connect server!");return;}long temp = System.currentTimeMillis();client.set_keyspace("DEMO");//使用DEMO keyspaceColumnParent parent = new ColumnParent("Student");//column family/** 这里我们插入100万条数据到Student内* 每条数据包括id和name*/String key_user_id = "a";for(int i = 0;i < 1000000;i++){String k = key_user_id + i;//keylong timestamp = System.currentTimeMillis();//时间戳Column idColumn = new Column(toByteBuffer("id"));//column nameidColumn.setValue(toByteBuffer(i + ""));//column valueidColumn.setTimestamp(timestamp);client.insert(toByteBuffer(k), parent, idColumn, ConsistencyLevel.ONE);Column nameColumn = new Column(toByteBuffer("name"));nameColumn.setValue(toByteBuffer("student" + i));nameColumn.setTimestamp(timestamp);client.insert(toByteBuffer(k), parent, nameColumn, ConsistencyLevel.ONE);}/** 读取某条数据的单个字段*/ColumnPath path = new ColumnPath("Student");//设置读取Student的数据path.setColumn(toByteBuffer("id")); //读取id String key3 = "a1";//读取key为a1的那条记录System.out.println(toString(client.get(toByteBuffer(key3), path, ConsistencyLevel.ONE).column.value));/** 读取整条数据*/SlicePredicate predicate = new SlicePredicate();SliceRange sliceRange = new SliceRange(toByteBuffer(""), toByteBuffer(""), false, 10);predicate.setSlice_range(sliceRange);List<ColumnOrSuperColumn> results = client.get_slice(toByteBuffer(key3), parent, predicate, ConsistencyLevel.ONE);for (ColumnOrSuperColumn result : results){Column column = result.column;System.out.println(toString(column.name) + " -> " + toString(column.value));}long temp2 = System.currentTimeMillis();System.out.println("time: " + (temp2 - temp) + " ms");//输出耗费时间tr.close();}/** 将String转换为bytebuffer,以便插入cassandra*/public static ByteBuffer toByteBuffer(String value) throws UnsupportedEncodingException{return ByteBuffer.wrap(value.getBytes("UTF-8"));}/** 将bytebuffer转换为String*/public static String toString(ByteBuffer buffer) throws UnsupportedEncodingException{byte[] bytes = new byte[buffer.remaining()];buffer.get(bytes);return new String(bytes, "UTF-8");}
}
cassandra学习笔记三相关推荐
- J2EE学习笔记三:EJB基础概念和知识 收藏
J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...
- tensorflow学习笔记(三十二):conv2d_transpose (解卷积)
tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...
- Ethernet/IP 学习笔记三
Ethernet/IP 学习笔记三 原文为硕士论文: 工业以太网Ethernet/IP扫描器的研发 知网网址: http://kns.cnki.net/KCMS/detail/detail.aspx? ...
- iView学习笔记(三):表格搜索,过滤及隐藏列操作
iView学习笔记(三):表格搜索,过滤及隐藏某列操作 1.后端准备工作 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django ...
- 吴恩达《机器学习》学习笔记三——多变量线性回归
吴恩达<机器学习>学习笔记三--多变量线性回归 一. 多元线性回归问题介绍 1.一些定义 2.假设函数 二. 多元梯度下降法 1. 梯度下降法实用技巧:特征缩放 2. 梯度下降法的学习率 ...
- Python基础学习笔记三
Python基础学习笔记三 print和import print可以用,分割变量来输出 import copy import copy as co from copy import deepcopy ...
- Mr.J-- jQuery学习笔记(三十二)--jQuery属性操作源码封装
扫码看专栏 jQuery的优点 jquery是JavaScript库,能够极大地简化JavaScript编程,能够更方便的处理DOM操作和进行Ajax交互 1.轻量级 JQuery非常轻巧 2.强大的 ...
- MYSQL学习笔记三:日期和时间函数
MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...
- ROS学习笔记三:创建ROS软件包
,# ROS学习笔记三:创建ROS软件包 catkin软件包的组成 一个软件包必须满足如下条件才能被称之为catkin软件包: 这个软件包必须包含一个catkin编译文件package.xml(man ...
最新文章
- Datawhale来杭电啦!
- js日期初始化总结:new Date()参数设置
- 2020-07-03 CVPR2020 i3DV论文讨论(2) 笔记
- 《信息存储与管理(第二版):数字信息的存储、管理和保护》—— 2.12 闪存盘简介...
- linux环型共享内存,Linux system v 共享内存
- python之路day9_python之路day9作业
- 迅游科技上演“宫斗” 董事长总裁互相罢免
- Linux配置Selenium+Chrome+Java实现自动化测试
- 201621123041java程序设计第二周学习总结
- nologging mysql_oraclenologgingoperation
- clickhouse: WSL下常见问题、常见用法和A股数据实践
- 小心Java中封装类的值比较
- ubuntu 13 sogou input method install
- html5全屏(Fullscreen)
- 网站SEO优化:遇到死链接就这样解决
- 无法创建视频捕捉过滤器怎么办
- java钟表动画_JavaFX实现简易时钟效果
- Datahero inc智能合约技术重塑供应链金融模式
- 苹果手机怎么用计算机隐藏应用,iphone怎么隐藏应用功能 iphone隐藏应用功能方法【详解】...
- 低碳生活进行时!国产“芯”RK3568创造智慧出行新体验