这里我们开始使用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学习笔记三相关推荐

  1. J2EE学习笔记三:EJB基础概念和知识 收藏

    J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...

  2. tensorflow学习笔记(三十二):conv2d_transpose (解卷积)

    tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...

  3. Ethernet/IP 学习笔记三

    Ethernet/IP 学习笔记三 原文为硕士论文: 工业以太网Ethernet/IP扫描器的研发 知网网址: http://kns.cnki.net/KCMS/detail/detail.aspx? ...

  4. iView学习笔记(三):表格搜索,过滤及隐藏列操作

    iView学习笔记(三):表格搜索,过滤及隐藏某列操作 1.后端准备工作 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django ...

  5. 吴恩达《机器学习》学习笔记三——多变量线性回归

    吴恩达<机器学习>学习笔记三--多变量线性回归 一. 多元线性回归问题介绍 1.一些定义 2.假设函数 二. 多元梯度下降法 1. 梯度下降法实用技巧:特征缩放 2. 梯度下降法的学习率 ...

  6. Python基础学习笔记三

    Python基础学习笔记三 print和import print可以用,分割变量来输出 import copy import copy as co from copy import deepcopy ...

  7. Mr.J-- jQuery学习笔记(三十二)--jQuery属性操作源码封装

    扫码看专栏 jQuery的优点 jquery是JavaScript库,能够极大地简化JavaScript编程,能够更方便的处理DOM操作和进行Ajax交互 1.轻量级 JQuery非常轻巧 2.强大的 ...

  8. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  9. ROS学习笔记三:创建ROS软件包

    ,# ROS学习笔记三:创建ROS软件包 catkin软件包的组成 一个软件包必须满足如下条件才能被称之为catkin软件包: 这个软件包必须包含一个catkin编译文件package.xml(man ...

最新文章

  1. Datawhale来杭电啦!
  2. js日期初始化总结:new Date()参数设置
  3. 2020-07-03 CVPR2020 i3DV论文讨论(2) 笔记
  4. 《信息存储与管理(第二版):数字信息的存储、管理和保护》—— 2.12 闪存盘简介...
  5. linux环型共享内存,Linux system v 共享内存
  6. python之路day9_python之路day9作业
  7. 迅游科技上演“宫斗” 董事长总裁互相罢免
  8. Linux配置Selenium+Chrome+Java实现自动化测试
  9. 201621123041java程序设计第二周学习总结
  10. nologging mysql_oraclenologgingoperation
  11. clickhouse: WSL下常见问题、常见用法和A股数据实践
  12. 小心Java中封装类的值比较
  13. ubuntu 13 sogou input method install
  14. html5全屏(Fullscreen)
  15. 网站SEO优化:遇到死链接就这样解决
  16. 无法创建视频捕捉过滤器怎么办
  17. java钟表动画_JavaFX实现简易时钟效果
  18. Datahero inc智能合约技术重塑供应链金融模式
  19. 苹果手机怎么用计算机隐藏应用,iphone怎么隐藏应用功能 iphone隐藏应用功能方法【详解】...
  20. 低碳生活进行时!国产“芯”RK3568创造智慧出行新体验

热门文章

  1. 白帽黑客眼中的网络安全 挡黑客财路曾收恐吓信
  2. 【酷熊科技】工作积累 ----------- Unity3D 读取 图片
  3. android音乐播放器进度条误差研究
  4. “父亲项目”走进澳洲校园 助父子建立联系
  5. apache、nginx验证
  6. 江苏技术师范学院大学机房管理系统[.NET项目]
  7. 关于工厂创建问题,一个纠结的终结源于KFC
  8. 跨林迁移用户、计算机、邮箱(1)
  9. 深入理解JavaScript内部原理(5): function
  10. Android用开源优势超Windows Mobile