1 用hbase工具导入 实际上市从hdfs 到hbase 的过程。 hive表的hdfs 路径为 ${hive.metastore.warehouse.dir}
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=HBASE_ROW_KEY,info:userid name /user/hive/warehouse/hive_hbase/*
2 创建HIVE->hbase映射表
CREATE TABLE employee_hbase
(key string,age int,sex string)
STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler‘
WITH SERDEPROPERTIES
("hbase.columns.mapping" = ":key,info:age,info:sex") TBLPROPERTIES ("hbase.table.name"="employee");
其中 Hive 表名:employee_hbase 有 key,age,sex 三列
HBase表名:employee_hbase 有 rowkey = key 列族 info 列 age sex ... (key 是固定值)
名称一一对应
利用 insert into table employee_hbase select name as key,age,sex from employee;可以将已有Hive 数据导入到HBase中
异常解决:
java.lang.IllegalArgumentException: The value of property hive.passthrough.storagehandler.of must not be null
Job Submission failed with exception ‘java.lang.IllegalArgumentException(The value of property hive.passthrough.storagehandler.of must not be null)‘
原因是创建了外部的映射表 。
CREATE EXTERNAL TABLE paint_action_prop_hbase (
uid string,
project_type string ,
avg_month_pv float,
....
把 EXTERNAL 去掉。删除hbase表。