1. 背景 2.hbase查询的确是不太方便,除了指定rowkey,或者通过指定startkey stopkey进行scan之外,没有更有效的查询方式 如果想通过列值过滤,只能全表扫描了 如果要搞什么group by或者order by(除非你的rowkey做了相应设计) 更是没法弄 在传统的mysql/or
1. 背景
2.hbase查询的确是不太方便,除了指定rowkey,或者通过指定startkey stopkey进行scan之外,没有更有效的查询方式 如果想通过列值过滤,只能全表扫描了 如果要搞什么group by或者order by(除非你的rowkey做了相应设计) 更是没法弄 在传统的mysql/oracle得心应手的查询在hbase上就是束手束脚
3.当然可以通过写hadoop job解决问题,但为了查询去写job,代价未免有点高 于是hive出现了
4.有两个方法可以集成hive和hbase
1.使用HBaseStorageHandler,这个会直接操作HBase,可能会对线上产生影响
2.将HBase定期导入到HDFS,再通过hive访问HDFS
下面将详述第二种方法
HDFS导入
1.使用datax将HBase表导入到HDFS上,比如/group/wireless-arctic/task/arctic_task
2.hive产生外部表,从而避免导入数据
CREATE EXTERNAL TABLE task_history (
biz_type string,
cid string,
content string,
ctime string,
gmt_create string,
hostName string,
item string,
mtime string,
otags string,
priority string,
retry string,
result string,
srcImages string,
src_url string,
status string,
summary string,
task_type string,
title string,
userId string,
userNick string,
utags string,
writer string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '