背景:需要将HBase中表某列的值抽取到hive中,在hive中进行ETL的处理
在hive shell中执行如下命令
CREATE EXTERNAL TABLE hbase_table_1(key int, value string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" = "xyz", "hbase.mapred.output.outputtable" = "xyz");
至此其实并没有将HBase的数据迁移到Hive中,或者说是物理迁移(将HBase中的数据拷贝至Hive文件系统,并生成相应文件),只是在Hive中建了一个与HBase表有一一映射的关系表(如果熟悉关系型数据库的,可以把这种映射关系理解为关系型数据库间的DBLink。),通过Hive这个表你可以进行查询、新增,但是不能做修改、删除操作