日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

hbase shelljava 获取多版本的值

發(fā)布時(shí)間:2024/9/30 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hbase shelljava 获取多版本的值 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在HBase中 一個(gè)row對(duì)應(yīng)的相同的列只會(huì)有一行。使用scan 或get 得到都是最新的數(shù)據(jù),如果我們對(duì)這某一row所對(duì)應(yīng)的列進(jìn)行了更改操作后,并不會(huì)多生成一條數(shù)據(jù),
不會(huì)像數(shù)據(jù)庫(kù)一樣,插入時(shí)多生成一條記錄,在HBase中對(duì)同一條數(shù)據(jù)的修改或插入都只是put操作,最終看到的都是最新的數(shù)據(jù),其它的數(shù)據(jù)在不同的version中保存,

默認(rèn)是隱藏的,通過(guò)時(shí)間戳區(qū)分,Hbase默認(rèn)保存最近的三個(gè)版本,如何才能看到這些舊版本的數(shù)據(jù)了?

插入測(cè)試數(shù)據(jù):

hbase(main):026:0> put 'testtable1','row-1','colfam1:qual1','你好,中國(guó)' 0 row(s) in 0.0200 secondshbase(main):027:0> put 'testtable1','row-1','colfam1:qual1','你好,廣州' 0 row(s) in 0.0130 secondshbase(main):027:0> put 'testtable1','row-1','colfam1:qual1','welcome,hbase' 0 row(s) in 0.0130 seconds


下面3個(gè)命令,只顯示最近的三個(gè)版本
hbase(main):015:0> get 'testtable1','row-1',{COLUMN=>'colfam1:qual1',VERSIONS=>10} COLUMN CELL colfam1:qual1 timestamp=1410943676361, value=welcome\xEF\xBC\x8Chbase colfam1:qual1 timestamp=1410942935244, value=\xE4\xBD\xA0\xE5\xA5\xBD\xEF\xBC\x8C\xE5\xB9\xBF\xE5\xB7\x9E colfam1:qual1 timestamp=1410942917285, value=\xE4\xBD\xA0\xE5\xA5\xBD\xEF\xBC\x8C\xE4\xB8\xAD\xE5\x9B\xBD 3 row(s) in 0.0270 secondshbase(main):016:0> scan 'testtable1', {COLUMN=>'colfam1:qual1',VERSIONS=>10} ROW COLUMN+CELL row-1 column=colfam1:qual1, timestamp=1410943676361, value=welcome\xEF\xBC\x8Chbase row-1 column=colfam1:qual1, timestamp=1410942935244, value=\xE4\xBD\xA0\xE5\xA5\xBD\xEF\xBC\x8C\xE5\xB9\xBF\xE5\xB7\x9E row-1 column=colfam1:qual1, timestamp=1410942917285, value=\xE4\xBD\xA0\xE5\xA5\xBD\xEF\xBC\x8C\xE4\xB8\xAD\xE5\x9B\xBD 1 row(s) in 0.0300 secondshbase(main):017:0> scan 'testtable1', {FILTER => "PrefixFilter ('row-1')",COLUMN=>'colfam1:qual1',VERSIONS=>10} ROW COLUMN+CELL row-1 column=colfam1:qual1, timestamp=1410943676361, value=welcome\xEF\xBC\x8Chbase row-1 column=colfam1:qual1, timestamp=1410942935244, value=\xE4\xBD\xA0\xE5\xA5\xBD\xEF\xBC\x8C\xE5\xB9\xBF\xE5\xB7\x9E row-1 column=colfam1:qual1, timestamp=1410942917285, value=\xE4\xBD\xA0\xE5\xA5\xBD\xEF\xBC\x8C\xE4\xB8\xAD\xE5\x9B\xBD 1 row(s) in 0.0220 seconds
下面2個(gè)命令,可以顯示所有的版本

hbase(main):018:0> scan 'testtable1',{FILTER => "(QualifierFilter (>=, 'binary:qual1')))",RAW => true, VERSIONS => 10} ROW COLUMN+CELL row-1 column=colfam1:qual1, timestamp=1410943676361, value=welcome\xEF\xBC\x8Chbase row-1 column=colfam1:qual1, timestamp=1410942935244, value=\xE4\xBD\xA0\xE5\xA5\xBD\xEF\xBC\x8C\xE5\xB9\xBF\xE5\xB7\x9E row-1 column=colfam1:qual1, timestamp=1410942917285, value=\xE4\xBD\xA0\xE5\xA5\xBD\xEF\xBC\x8C\xE4\xB8\xAD\xE5\x9B\xBD row-1 column=colfam1:qual1, timestamp=1410936055137, value=\xE4\xB8\xAD\xE5\x9B\xBD\xE7\xAC\xAC\xE4\xB8\x89\xE6\x96\xB9\xE7\x9A\x84\xE4\xBA\x8C\xE6\x96\xB9\xE7\x9A\x84 row-1 column=colfam1:qual1, timestamp=1410936031157, value=\xE4\xB8\xAD\xE5\x9B\xBD\xE7\xAC\xAC\xE4\xB8\x89\xE6\x96\xB9\xE7\x9A\x84 1 row(s) in 0.0290 secondshbase(main):019:0> scan 'testtable1',{FILTER => "PrefixFilter ('row-1')",RAW => true, VERSIONS => 10} ROW COLUMN+CELL row-1 column=colfam1:qual1, timestamp=1410943676361, value=welcome\xEF\xBC\x8Chbase row-1 column=colfam1:qual1, timestamp=1410942935244, value=\xE4\xBD\xA0\xE5\xA5\xBD\xEF\xBC\x8C\xE5\xB9\xBF\xE5\xB7\x9E row-1 column=colfam1:qual1, timestamp=1410942917285, value=\xE4\xBD\xA0\xE5\xA5\xBD\xEF\xBC\x8C\xE4\xB8\xAD\xE5\x9B\xBD row-1 column=colfam1:qual1, timestamp=1410936055137, value=\xE4\xB8\xAD\xE5\x9B\xBD\xE7\xAC\xAC\xE4\xB8\x89\xE6\x96\xB9\xE7\x9A\x84\xE4\xBA\x8C\xE6\x96\xB9\xE7\x9A\x84 row-1 column=colfam1:qual1, timestamp=1410936031157, value=\xE4\xB8\xAD\xE5\x9B\xBD\xE7\xAC\xAC\xE4\xB8\x89\xE6\x96\xB9\xE7\x9A\x84 row-1 column=colfam2:col-0, timestamp=1410935938913, value=val-1.0 row-1 column=colfam2:col-1, timestamp=1410935938921, value=val-1.1 row-1 column=colfam2:col-2, timestamp=1410935938927, value=val-1.2 row-1 column=colfam2:col-3, timestamp=1410935938929, value=val-1.3 row-1 column=colfam2:col-4, timestamp=1410935938932, value=val-1.4 row-1 column=colfam2:col-5, timestamp=1410935938935, value=val-1.5 row-1 column=colfam2:col-6, timestamp=1410935938937, value=val-1.6 row-1 column=colfam2:col-7, timestamp=1410935938939, value=val-1.7 row-1 column=colfam2:col-8, timestamp=1410935938941, value=val-1.8 row-1 column=colfam2:col-9, timestamp=1410935938944, value=val-1.9 1 row(s) in 0.0690 seconds
用java代碼測(cè)試:

package client;// cc GetExample Example application retrieving data from HBase import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.util.Bytes;import util.HBaseHelper;import java.io.IOException;import org.apache.hadoop.hbase.KeyValue;import java.util.List; public class GetExample {public static void main(String[] args) throws IOException {// vv GetExampleConfiguration conf = HBaseConfiguration.create(); // co GetExample-1-CreateConf Create the configuration.conf.set("hbase.zookeeper.property.clientPort", "2181"); conf.set("hbase.zookeeper.quorum", "jifeng01"); conf.set("zookeeper.znode.parent", "/hbase");/*/ ^^ GetExampleHBaseHelper helper = HBaseHelper.getHelper(conf);if (!helper.existsTable("testtable1")) {helper.createTable("testtable1", "colfam1");}*///vv GetExampleHTable table = new HTable(conf, "testtable1"); // co GetExample-2-NewTable Instantiate a new table reference.Get get = new Get(Bytes.toBytes("row-1")); // co GetExample-3-NewGet Create get with specific row.get.setMaxVersions();get.addColumn(Bytes.toBytes("colfam1"), Bytes.toBytes("qual1"));Result result = table.get(get);List<KeyValue> list = result.list(); for(final KeyValue kv:list){// System.out.println("value: "+ kv+ " str: "+Bytes.toString(kv.getValue()));System.out.println(String.format("row:%s, family:%s, qualifier:%s, qualifiervalue:%s, timestamp:%s.", Bytes.toString(kv.getRow()), Bytes.toString(kv.getFamily()), Bytes.toString(kv.getQualifier()), Bytes.toString(kv.getValue()),kv.getTimestamp())); }/*get.addColumn(Bytes.toBytes("colfam1"), Bytes.toBytes("qual1")); // co GetExample-4-AddCol Add a column to the get.Result result = table.get(get); // co GetExample-5-DoGet Retrieve row with selected columns from HBase.byte[] val = result.getValue(Bytes.toBytes("colfam1"),Bytes.toBytes("qual1")); // co GetExample-6-GetValue Get a specific value for the given column.System.out.println("Value: " + Bytes.toString(val)); // co GetExample-7-Print Print out the value while converting it back.*/// ^^ GetExample} }
輸出結(jié)果:

row:row-1, family:colfam1, qualifier:qual1, qualifiervalue:welcome,hbase, timestamp:1410943676361. row:row-1, family:colfam1, qualifier:qual1, qualifiervalue:你好,廣州, timestamp:1410942935244. row:row-1, family:colfam1, qualifier:qual1, qualifiervalue:你好,中國(guó), timestamp:1410942917285.

與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的hbase shelljava 获取多版本的值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。