Hive与HBase 整合使用
1. 在Hive中创建Hbase识别的表方法
CREATE TABLE IF NOTEXISTS user_time_day (
telno STRING,
province STRING,
time_tag_1 STRING,
time_tag_2 STRING
)
stored by'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties ("hbase.columns.mapping"=":key,cf1:province,cf2:tag1,cf2:tag2")tblproperties("hbase.table.name"="hbase_table_1");
注解:
hbase.table.name定义在hbase的table名称
hbase.columns.mapping定义在hbase的列族,里面的:key 是固定值而 且是唯一值
cf1:province 是hbase中的列簇+qualifier
2. 登录hbase查看表及表结构
3. 创建数据加载表
CREATE TABLE IF NOTEXISTS hive_user_time_day (
telno STRING,
province STRING,
time_tag_1 STRING,
time_tag_2 STRING
)
ROW FORMAT DELIMITEDFIELDS TERMINATED BY '|' ;
4. 测试数据 user_time_day.txt
13009700739|011|20-22|20-22
13009703673|011|20-22|20-22
13009701115|011|16-18|16-18
13009705835|011|22-24|12-14
13009719309|011|20-22|12-14
5. 加载数据到hive 表中
load data localinpath '/opt/hive/user_time_day.txt' into table hive_user_time_day;
6. 增量加载 到hbase 表中(overwrite 无效 )
insert overwritetable user_time_day select * from hive_user_time_day;
7. hive client端查看表内容
8. hbase client端查看内容
9. hbase client 添加数据
10. hive client 查看数据
11. hive client 添加数据到hive_user_time_day表中,然后通过insert 语句数据到hbase表中
12. hive client端查看数据
13. hbase端数据验证
需要注意的事项:
#在hive中创建有分区的表与hbase整合后,使用
Select * from user_time_day_p ; 命令无法看到表中的记录,使用
Select telno,province from user_time_day_p ;可以看到记录。
分析原因:
select *在普通表中是直接读取HDFS文件。在这里是直接从HBase进行查
询。应该是查询成功了,但是hive并不会展示。
其它情况需要运行mapreduce,就没有问题了。
整合的表不支持修改
FAILED: Error in metadata: Cannot use ALTER TABLE on a non-native
table