1

有没有办法通过 Hive 访问现有的 HBase 表记录?

4

2 回答 2

2

根据Hive HBase 集成 wiki 页面,可以使用如下的 create table 命令:

CREATE TABLE hbase_table_1(key int, value string) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" = "xyz");

但是,请记住,在 Hive 0.8 及之前的版本中创建这样的表将只允许您访问通过相应 Hive 表插入的 HBase 表中的数据。如果您的 HBase 表中有任何未通过 Hive 表插入的预先存在的数据,您也将无法通过 Hive 表查询它。

从 Hive 0.9 开始,JIRA 1634将可用,它允许 Hive 表访问 HBase 表中存在的所有数据,而不管它是如何插入其中的。

于 2012-04-25T02:17:26.633 回答
2

是的,这绝对是可能的。事实上 Hive 被大量使用,因为 Hbase 不提供诸如“JOINS”等 SQL 函数。此外,Hive 让不熟悉 NOSQL 术语的用户变得容易。你只需要在 Hive 中创建一个表,该表提供与现有 Hbase 表的映射。创建此映射时应小心。正确包含 Hbase 表中存在的所有内容。我想在这里添加一件重要的事情。 .我们不应该将 Hive 视为 Hbase 的替代品,因为它适用于批处理而不是完全实时的应用程序。

于 2012-04-07T21:15:00.590 回答