直接上做法。
先查看要导的表:
hbase(main):001:0> list
TABLE
mydemo:mytest
mydemo:scores
mydemo:userinfo
t1
tbl_user
test1
6 row(s) in 0.2890 seconds
=> ["mydemo:mytest", "mydemo:scores", "mydemo:userinfo", "t1", "tbl_user", "test1"]
hbase(main):002:0> scan 'mydemo:userinfo'
ROW COLUMN+CELL
1 column=base:stuno, timestamp=1592986773309, value=\x00\x00\x00\x00\x00\x00\x0
0\x01
1 column=base:username, timestamp=1592983315179, value=zhangsan
1 column=external:likes, timestamp=1592983337974, value=player,eat
2 column=base:age, timestamp=1592983352939, value=30
2 column=base:username, timestamp=1592983346576, value=lisi
3 column=base:username, timestamp=1592986581168, value=zhangsanfeng
3 row(s) in 0.1880 seconds
然后去映射:
create external table myhbtb(
kw string, //这是取得key 随便取名字 高兴你可以叫sb
stuno string, //注意修饰符要按照顺序写
username string,
age string,
likes string
)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties ("hbase.columns.mapping"=":key,base:stuno,base:username,base:age,external:likes")
// 此处一定要严格按照 列蔟:修饰符 的格式写, 并且顺序一定要个你的hbase表顺序一样不能变
tblproperties("hbase.table.name"="mydemo:userinfo");
//这是什么就不用我多说了8 库名:表名
看结果:
hive> select * from myhbtb;
OK
1 zhangsan NULL player,eat
2 NULL lisi 30 NULL
3 NULL zhangsanfeng NULL NULL
Time taken: 0.165 seconds, Fetched: 3 row(s)