hbase整合hive

Hbase是被设计用来做K-V查询,但有时候也会遇到基于Hbase表的复杂统计,写MR很不方便。hive考虑到这一点,提供了操作Hbase表的接口。hive读取Hbase表,通过MR最终使用HiveHbaseTableInputFormat来读取数据,在getSplit()方法中对Hbase进行切分,切分原则是根据该表对应的Hregion,将每个region作为一个InputSplit,即该表有多少个region就有多少个map task;

每个region的大小由参数hbase.hregion.max.filesize控制,默认10G,这样会使得每个map task处理的数据文件太大,map task性能自然很差;

为Hregion表预分配region,使得每个region的大小在合理的范围;

实际操作

--在hive中新建一个外部表,

create external table h_table(id string, col1 string, age int,col2 string)

STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'

--映射关系,id=:key;col1=f1:col1;age=f1:age;col2=f1:col2

WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,f1:col1,f1:age,f1:col2")

TBLPROPERTIES("hbase.table.name" = "table1");

另外hbase还可以对接到

你可能感兴趣的:(hbase整合hive)