Hbase中多版本(version)数据获取办法
来源:互联网 发布:知乎 编辑:程序博客网 时间:2024/06/06 18:08
前言:本文介绍2种获取列的多版本数据的方式:shell和spring data hadoop
一、hbase shell中如何获取
1、在shell端创建一个Hbase表
- create 't1','f1'
- describe 't1'
- Table t1 is ENABLED
- t1
- COLUMN FAMILIES DESCRIPTION
- {NAME => 'f1', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NON
- E', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'
- }
- 1 row(s) in 0.1370 seconds
3、修改表结构,让Hbase表支持存储3个VERSIONS的版本列数据
- alter 't1',{NAME=>'f1',VERSIONS=>3}
- Updating all regions with the new schema...
- 1/1 regions updated.
- Done.
- 0 row(s) in 2.5680 seconds
- Table t1 is ENABLED
- t1
- COLUMN FAMILIES DESCRIPTION
- {NAME => 'f1', BLOOMFILTER => 'ROW', VERSIONS => '3', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NON
- E', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'
- }
- 1 row(s) in 0.0330 seconds
4、插入3行数据
- hbase(main):015:0> put 't1','rowkey1','f1:name','chhliu'
- 0 row(s) in 0.5890 seconds
- hbase(main):016:0> put 't1','rowkey1','f1:name','xyh123'
- 0 row(s) in 0.1900 seconds
- hbase(main):017:0> put 't1','rowkey1','f1:name','chhliuxyh'
- 0 row(s) in 0.1580 seconds
- hbase(main):018:0> get 't1','rowkey1','f1:name'
- COLUMN CELL
- f1:name timestamp=1482820567560, value=chhliuxyh
- 1 row(s) in 0.2110 seconds
5、获取多行数据方法
- hbase(main):002:0> get 't1','rowkey1',{COLUMN=>'f1:name',VERSIONS=>3}
- COLUMN CELL
- f1:name timestamp=1482820567560, value=chhliuxyh
- f1:name timestamp=1482820541363, value=xyh123
- f1:name timestamp=1482820503889, value=chhliu
- 3 row(s) in 0.0960 seconds
二、spring data hadoop获取多版本信息
1、服务封装如下:
- public List<String> get(final String tableName, final byte[] rowName, final String familyName,
- final String qualifier) {
- return htemplate.execute(tableName, new TableCallback<List<String>>() {
- @Override
- public List<String> doInTable(HTableInterface table) throws Throwable {
- Get get = new Get(rowName);
- get.setMaxVersions(3); // 设置一次性获取多少个版本的数据
- get.addColumn(familyName.getBytes(), qualifier.getBytes());
- Result result = table.get(get);
- List<Cell> cells = result.listCells();
- String res = "";
- List<String> list = new ArrayList<String>();
- if(null != cells && !cells.isEmpty()){
- for(Cell ce:cells){
- res = Bytes.toString(ce.getValueArray(),
- ce.getValueOffset(),
- ce.getValueLength());
- System.out.println("res:"+res+" timestamp:"+ce.getTimestamp());
- list.add(res);
- }
- }
- return list;
- }
- });
- }
- List<String> result = hService.get("t1", rowKey, "f1", "name");
- System.out.println("result:"+result);
- res:chhliuxyh timestamp:1482820567560
- res:xyh123 timestamp:1482820541363
- res:chhliu timestamp:1482820503889
阅读全文
0 0
- Hbase中多版本(version)数据获取办法
- Hbase中多版本(version)数据获取办法
- Hbase中多版本(version)数据获取办法
- hbase 获取cell 中各个版本的数据
- hbase 获取cell 中各个版本的数据
- HBase中数据的多版本特性潜在的意外
- HBase中数据的多版本特性潜在的意外
- HBase中数据的多版本特性潜在的意外
- hbase获取所有版本(时间戳)的数据
- HBase-7.hbase查询多版本数据&过滤器原则&批量导入Hbase&hbase预分区
- Hbase coprocessor获取数据
- hbase shell&java 获取多版本的值
- 高版本Oracle数据库中数据迁移至低版本Oracle数据库中的一种办法
- Unsupported major.minor version (jdk版本错误)解决方案 办法
- Unsupported major.minor version (jdk版本错误)解决方案 办法
- Unsupported major.minor version (jdk版本错误)解决方案 办法
- Unsupported major.minor version (jdk版本错误)解决方案 办法
- Unsupported major.minor version (jdk版本错误)解决方案办法
- C与指针 10-12章
- 遍历 jquery $().each和$.each()
- 小项目 | 注释转换
- Aerospike Has Removed the Large Data Type (LDT) Feature--Aerospike已经不再支持LDT特性
- HDU 1869 六度分离
- Hbase中多版本(version)数据获取办法
- C#初学者如何快上手2控制台项目
- 热分析技术清单:导热材料热扩散系数闪光法测量中的样品厚度选择
- 十年后,程序员还会有今天的收入吗?
- 516. Longest Palindromic Subsequence(最长回文子序列)
- 枚举类模板
- ionic +cordova环境搭建
- 自动打开国航APP并签到
- 弹幕案例