`
heipark
  • 浏览: 2096966 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hector使用笔记——官方5分钟教程加强版.

 
阅读更多

 官方教程有几个问题:不能直接运行;key和value为16进制值;因为副本数量为2,单机无法运行

 

下面代码基于cassandra 1.2 

 

import static junit.framework.Assert.assertEquals;

import java.util.Arrays;

import me.prettyprint.cassandra.serializers.LongSerializer;
import me.prettyprint.cassandra.serializers.StringSerializer;
import me.prettyprint.cassandra.service.ColumnSliceIterator;
import me.prettyprint.cassandra.service.ThriftKsDef;
import me.prettyprint.cassandra.service.template.ColumnFamilyResult;
import me.prettyprint.cassandra.service.template.ColumnFamilyTemplate;
import me.prettyprint.cassandra.service.template.ColumnFamilyUpdater;
import me.prettyprint.cassandra.service.template.ThriftColumnFamilyTemplate;
import me.prettyprint.hector.api.Cluster;
import me.prettyprint.hector.api.Keyspace;
import me.prettyprint.hector.api.beans.HColumn;
import me.prettyprint.hector.api.ddl.ColumnFamilyDefinition;
import me.prettyprint.hector.api.ddl.ComparatorType;
import me.prettyprint.hector.api.ddl.KeyspaceDefinition;
import me.prettyprint.hector.api.exceptions.HectorException;
import me.prettyprint.hector.api.factory.HFactory;
import me.prettyprint.hector.api.query.SliceQuery;

import org.junit.Test;

public class Hector5Min {

	String clusterName = "test-cluster";
	String keyspace = "ks1";
	String cfName = "cf1";

	Cluster cluster = HFactory.getOrCreateCluster(clusterName, "localhost:9160");

	Keyspace ksp = HFactory.createKeyspace(keyspace, cluster);

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

	@Test
	public void createKeySpaceAndCf() {
		ColumnFamilyDefinition cfDef = HFactory.createColumnFamilyDefinition(keyspace, cfName, ComparatorType.UTF8TYPE);
		// 下面两行我加的,为了让key和value以UTF8格式保存
		cfDef.setKeyValidationClass(ComparatorType.UTF8TYPE.getClassName());
		cfDef.setDefaultValidationClass(ComparatorType.UTF8TYPE.getClassName());

		// 副本数我修改为1,官方为2,单机无法测试使用
		KeyspaceDefinition newKeyspace = HFactory.createKeyspaceDefinition(keyspace, ThriftKsDef.DEF_STRATEGY_CLASS, 1, Arrays.asList(cfDef));
		cluster.addKeyspace(newKeyspace, true);
	}

	@Test
	public void insert() {
		ColumnFamilyUpdater<String, String> updater = template.createUpdater("rowkey1");
		updater.setString("name", "heipark");
		try {
			template.update(updater);
		} catch (HectorException e) {
			System.out.println(e);
		}
	}

	@Test
	public void read() {
		try {
			ColumnFamilyResult<String, String> res = template.queryColumns("rowkey1");
			assertEquals("heipark", res.getString("name"));
		} catch (HectorException e) {
			System.out.println(e);
		}
	}

	@Test
	public void delete() {
		try {
			template.deleteColumn("rowkey1", "name");
		} catch (HectorException e) {
			// do something
		}
	}

	@Test
	// 根据单个key查询所有columns
	public void testSliceQuery2() {
		SliceQuery<String, String, Long> query = HFactory.createSliceQuery(ksp, StringSerializer.get(), StringSerializer.get(), LongSerializer.get());
		query.setColumnFamily(cf1);
		query.setKey(yourRowkey);

		ColumnSliceIterator<String, String, Long> iterator = new ColumnSliceIterator<String, String, Long>(query, null, "\uFFFF", false);
		while (iterator.hasNext()) {
			HColumn<String, Long> element = iterator.next();
			System.out.println(element.getName() + ":" + element.getValue());
		}
	}

}

 

 参考:

Getting started (5 minutes)

https://github.com/hector-client/hector/wiki/Getting-started-%285-minutes%29

 

--end 

分享到:
评论

相关推荐

    rplidar使用hector_slam的hector_mapping geotiff创建地图方法

    ### rplidar使用hector_slam的hector_mapping与geotiff创建地图方法详解 #### 一、前言 在机器人技术领域,特别是在自主导航和环境感知方面,使用激光雷达(LiDAR)来构建环境地图是十分常见的做法。本文将详细...

    gamit使用视频:GNSS高精度数据处理实战运用——GAMIT/GLOBK手把手教学

    3、熟练GAMIT/GLOBK软件的安装流程与使用方法; 4、熟练GLOBK平差流程和处理策略; 5、掌握应用GAMIT/GLOBK软件进行高精度GNSS工程控制网数据处理与精度评估; 6、掌握应用GAMIT/GLOBK软件进行CORS站网坐标时间序列...

    hector quadrotor tutorial

    标题中的“Hector quadrotor tutorial”指的是一个关于Hector四旋翼无人机的教程,它主要涉及使用Hector SLAM(Simultaneous Localization And Mapping)技术。Hector SLAM是一种广泛应用于机器人领域的算法,用于...

    hector_slam_slam_

    标题中的“Hector slam_slam_”指的是Hector SLAM(Simultaneous Localization and Mapping,同时定位与建图)算法,这是一个广泛应用于机器人导航领域的技术。SLAM是机器人在未知环境中构建地图的同时进行自我定位...

    hector_slam-master.zip_Hector slam介绍_hector_slam_laser slam_slam

    标题中的“Hector slam-master.zip_Hector slam介绍_hector_slam_laser slam_slam”表明这是一个关于Hector SLAM(Simultaneous Localization and Mapping,即同时定位与建图)的项目压缩包,其中包含了相关代码和...

    Hector SLAM ppt

    Hector SLAM是一种用于机器人自主导航和地图构建的算法,尤其适用于末世搜索与救援(USAR)环境中的应用。它能够在机器人定位和地图构建(SLAM)的范畴内实现实时的环境感知和机器人自我定位。本文将详细探讨Hector ...

    Team_Hector_MappingBox_RoboCup_2011_Rescue_Arena.bag

    数据包:Team_Hector_MappingBox_RoboCup_2011_Rescue_Arena.bag

    hector slam源码

    - `HectorMapping::publishMap()`: 将构建的地图发布为ROS话题,供其他节点使用。 - `HectorMapping::optimizeGraph()`: 执行图优化,提高地图的精度和一致性。 - `hector_pose_estimation`: 提供姿态估计功能,...

    hector client guide

    ### Hector Client Guide 知识点解析 #### 一、引言 Hector 是一个 Java 客户端库,用于简化 Apache Cassandra 的使用。它提供了一系列高级功能,如连接池管理、故障检测与恢复、基本负载均衡等,这些功能在原生的 ...

    java NoSql Cassandra hector

    5. 高级功能:Hector还支持更复杂的操作,如超级列、时间戳控制、批量操作等,以及CQL(Cassandra Query Language)的使用。 Cassandra_demo示例: 在提供的"Cassandra_demo"压缩包中,可能包含了一个简单的Java...

    激光SLAM Hector官方论文A Flexible and Scalable SLAM System with Full1

    "激光SLAM Hector官方论文A Flexible and Scalable SLAM System with Full 3D Motion Estimation" 提出了一种灵活且可扩展的SLAM系统,该系统具有完整的三维运动估计功能,特别适用于城市搜索和救援(USAR)等应用。...

    hector-object-mapper-3.1-07.zip

    标题中的"hector-object-mapper-3.1-07.zip"表明这是一个关于Hector对象映射器的软件包,版本为3.1.07。Hector是Cassandra数据库的一个客户端库,它提供了Java API,使得开发者可以方便地与Cassandra进行交互。对象...

    hector_slam源码

    标题"hector_slam源码"指的是源自德国斯图加特大学的 Hector SLAM(Simultaneous Localization And Mapping)算法的源代码。Hector SLAM是一种适用于移动机器人定位和建图的开源算法,尤其适用于低计算资源的硬件...

    基于Hector SLAM算法的全场景自动驾驶护士床设计.pdf

    "基于Hector SLAM算法的全场景自动驾驶护士床设计" 本文档概括了基于Hector SLAM算法的全场景自动驾驶护士床设计,旨在解决医院中的病床及轮椅都不具有自动行驶的功能的问题。该设计采用ROS机器人操作系统和激光...

    ROS初学者教程.pdf

    根据提供的文件内容,本教程涵盖的ROS相关知识点如下: 一、ROS简介 1. ROS定义:机器人操作系统(Robot Operating System,ROS)是一个用于机器人的开源元操作系统,提供了一系列工具、库、约定,用于帮助软件...

    hector_slam-release

    在包hector_slam仓库被释放到noetic运行发行版/usr/local/bin/bloom-release hector_slam --ros-distro noetic上Mon, 12 Apr 2021 17:51:56 -0000 这些软件包已发布: hector_compressed_map_transport hector_...

    hector-urquijo.github.io:信息存储库

    标题 "hector-urquijo.github.io:信息存储库" 暗示这是一个个人或项目的网页源代码存储库,很可能托管在GitHub上。这个存储库是Hector Urquijo的个人网页,它可能包含了关于他的个人信息、项目展示、博客文章或者...

    gmapping,hector,catorgrapher总结及论文

    GMAPPING是最早被广泛使用的开源SLAM算法之一,由Grisetti等人在2007年提出的。该算法基于概率框架,采用贝叶斯滤波方法,特别是扩展卡尔曼滤波(EKF)进行状态估计。GMAPPING利用扫描匹配技术来更新机器人位置,...

    Hector9000:花哨的机器人,具有许多不必要的功能,而且...当然... WiFi和一堆闪烁的LED

    HECTOR 9000最低要求- RaspberryPi 3- Debian bases Linux (to use installscript)在RaspberryPi上安装首先,您必须克隆Hector的github回购git clone https://github.com/H3c702/Hector9000.git该存储库不包含前端。...

    北大数据库原理与应用大作业

    2. **索引设计**:在Hadoop的SQL引擎中,虽然索引机制不同于传统的RDBMS,但可以创建辅助表或使用Hive的索引功能来加速查询。 3. **查询优化**:编写高效的SQL查询,避免全表扫描,利用WHERE子句筛选数据,减少JOIN...

Global site tag (gtag.js) - Google Analytics