基于时间戳从Hive访问HBase表数据

时间:2015-03-31 15:08:22

标签: hadoop hive hbase cloudera hortonworks-data-platform

我通过提到默认版本为10

创建了一个HBase
create 'tablename',{NAME => 'cf', VERSIONS => 10}

并插入两行(row1和row2)

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}

我能够看到所有版本的数据。

现在创建了一个Hive External表来指向这个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 个答案:

答案 0 :(得分:1)

不幸的是,没有。根据{{​​3}}文件,

  

目前无法访问HBase timestamp属性,查询始终使用最新时间戳访问数据。

有一些JIRA谈论时间戳相关的功能,但他们并没有真正按照你的要求做,而且他们没有得到很好的接待:(