导入jar包

为了能够使用hector操作Cassandra数据库,首先导入hector的jar包,注意根据实际情况修改版本号

<dependency>
<groupId>me.prettyprint</groupId>
<artifactId>hector-core</artifactId>
<version>1.0-2</version>
</dependency>

初始化一个集群

我们首先创建一个代表Cassandra集群的集群对象,值得注意的是集群的名字仅仅是一个集群标示,和真正的Cassandra集群没有关系。为了使代码更清晰,我们也要导入整个API包。

import me.prettyprint.hector.api.*;
....
Cluster myCluster = HFactory.getOrCreateCluster("test-cluster","localhost:9160");

我们来创建一个Schema

ColumnFamilyDefinition cfDef = HFactory.createColumnFamilyDefinition("MyKeyspace",
"ColumnFamilyName",
ComparatorType.BYTESTYPE); KeyspaceDefinition newKeyspace = HFactory.createKeyspaceDefinition("MyKeyspace",
ThriftKsDef.DEF_STRATEGY_CLASS,
replicationFactor,
Arrays.asList(cfDef));
// 添加schema到集群
// 第二个参数为true意味着hector会阻塞直到所有的节点感知到操作
cluster.addKeyspace(newKeyspace, true);

一旦创建了Schema,前面的调用将抛出一个异常,表示我们正在尝试创建的Keyspace已经存在。为了解决这个问题,您可以用一个名为“createSchema()”的方法包装前面的代码;然后加上以下几行:

KeyspaceDefinition keyspaceDef = cluster.describeKeyspace("MyKeyspace");
// 如果Keyspace不存在且columnFamily不存在,则创建
if (keyspaceDef == null) {
createSchema();
}

最后我们创建Keyspace,它是一个长生命周期的组件,代表了我们要执行操作的cassandra的keyspace。

Keyspace ksp = HFactory.createKeyspace("MyKeyspace", myCluster);

你必须首先在Cassandra里面创建名为"MyKeyspace" 的Keyspace,才能执行上述操作。

创建一个 template

template和Keyspace一样也是一个长生命周期组件,理想情况下,您希望将模板对象保存在DAO中,以方便访问您的业务模型。

mport me.prettyprint.cassandra.service.template.ColumnFamilyTemplate;

    ......

ColumnFamilyTemplate<String, String> template =
new ThriftColumnFamilyTemplate<String, String>(ksp,
columnFamily,
StringSerializer.get(),
StringSerializer.get());

更新数据

// <String, String> correspond to key and Column name.
ColumnFamilyUpdater<String, String> updater = template.createUpdater("a key");
updater.setString("domain", "www.datastax.com");
updater.setLong("time", System.currentTimeMillis()); try {
template.update(updater);
} catch (HectorException e) {
// do something ...
}

读数据

try {
ColumnFamilyResult<String, String> res = template.queryColumns("a key");
String value = res.getString("domain");
// value should be "www.datastax.com" as per our previous insertion.
} catch (HectorException e) {
// do something ...
}

删除数据

try {
template.deleteColumn("key", "column name");
} catch (HectorException e) {
// do something
}

遍历Cloumn

SliceQuery<String, String, String> query = HFactory.createSliceQuery(ksp, StringSerializer.get(),
StringSerializer.get(), StringSerializer.get()).
setKey("a key").setColumnFamily(columnFamily); ColumnSliceIterator<String, String, String> iterator =
new ColumnSliceIterator<String, String, String>(query, null, "\uFFFF", false); while (iterator.hasNext()) {
// do something
}

翻译自:https://github.com/hector-client/hector/wiki/Getting-started-(5-minutes)

Hector 入门的更多相关文章

  1. SLAM入门必收藏的资料

    搜集了各大网络,请教了SLAM大神,终于把SLAM的入门资料搜集全了!在分享资料前,我们先来看看,SLAM技术入门前需要具备哪些知识?首先学习SLAM需要会C和C++,网上很多代码还用了11标准的C+ ...

  2. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  3. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  4. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

  5. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  6. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  7. Angular2入门系列教程4-服务

    上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...

  8. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  9. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

随机推荐

  1. Spark设计思想浅析

    Spark is no rocket science!——博主 了解分布式计算的朋友,一定知道DAG这样一个概念.其实我接触DAG也是在学习MapReduce时了解到的.(具体可查阅<大数据日知 ...

  2. vue路由组件传参

    在组件中使用 $route 会使之与其对应路由形成高度耦合,从而使组件只能在某些特定的 URL 上使用,限制了其灵活性. 使用 props 将组件和路由解耦: 取代与 $route 的耦合 const ...

  3. visual studio 各种错误汇总

    ----不定时更新 vs2012 智能提示消失解决办法 一般你可以重启vs就可以解决问题,最蛋疼的是你重启也没用.只能重置,再不行就重装vs,再不行你就重装系统......扯淡了... 重置Visua ...

  4. 20155317 王新玮 2016-2017-2 《Java程序设计》第9周学习总结

    20155317 王新玮 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以 ...

  5. schwarz( 施瓦兹)不等式证明

    证明 如果: 函数 y=ax^2+2bx+c 对任意x >=0 时 y>=0; 函数图象在全部x轴上方,故二次方程判别式 b^2-4ac<=0;(即方程无实数解) 即(2b)^2&l ...

  6. 揭开AutoRun功能的神秘面纱

    有很多光盘放入光驱就会自动运行,它们是怎么做到的呢?光盘一放入光驱就会自动被执行,主要依靠两个文件,一是光盘上的AutoRun.inf文件,另一个是操作系统本身的系统文件之一的Cdvsd.vxd.Cd ...

  7. 记spring mvc传入List<Object>的一次尝试

    首先,看一段异常: org.springframework.http.converter.HttpMessageNotReadableException: Could not read documen ...

  8. 关于iOS的自动弹出键盘问题

    -(void)viewWillAppear:(BOOL)animated {     [super viewWillAppear:animated];     [self.textField beco ...

  9. 第二届普适计算和信号处理及应用国际会议论文2016年 The 2nd Conference on Pervasive Computing, Signal Processing and Applications(PCSPA, 2016)

    A New Method for Mutual Coupling Correction of Array Output Signal 一种阵列输出信号互耦校正的新方法 Research of Robu ...

  10. 落地存储pika

    官方文档这样介绍pika pika是什么   pika 是DBA和基础架构组联合开发的类Redis 存储系统,所以完全支持Redis协议,用户不需要修改任何代码,就可以将服务迁移至pika.Pika是 ...