2015-03-31 81 views
1

我创建了一个HBase的提一下默认版本为10访问HBase的表从蜂巢基于时间戳

create 'tablename',{NAME => 'cf', VERSIONS => 10} 

数据并插入两行(ROW1和2行)

put 'tablename','row1','cf:id','row1id' 
put 'tablename','row1','cf:name','row1name' 
put 'tablename','row2','cf:id','row2id' 
put 'tablename','row2','cf:name','row2name' 
put 'tablename','row2','cf:name','row2nameupdate' 
put 'tablename','row2','cf:name','row2nameupdateagain' 
put 'tablename','row2','cf:name','row2nameupdateonemoretime' 

试过使用扫描选择数据

scan 'tablename',{RAW => true, VERSIONS => 10} 

我可以看到所有版本的数据。

现在创建了一个蜂巢外部表指向这个HBase的表

CREATE EXTERNAL TABLE hive_timestampupdate(key int, value string) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf:name") 
TBLPROPERTIES ("hbase.table.name" = "tablename"); 

当我查询的表hive_timestampupdate,我能看到HBase的表中的数据。

select * from hive_timestampupdate; 

这里我想查询基于时间戳的数据。有没有办法根据HBase表的时间戳来查询数据?

回答

1

不幸的是,没有。根据Hive HBase Integration文档,

目前没有办法访问HBase timestamp属性,并且查询总是以最新的时间戳访问数据。

有一些JIRAs谈论时间戳相关的功能,但他们并没有真正做你问什么,他们没有得到一个很大的接待:(