标签:apache prope form dmi limit EDA 离线 for sele
之前有操作过HBase和Hive的案例,将30w条数据从Hive导入HBase。使用sqoop可以快速简单做到,但是在最新版HBase2.0与最新版Hive3.0之间,旧版sqoop不行,因此当时使用了JDBC来连接两者,达到数据导出的目的。
建立Hive表,关联HBase表,插入数据到Hive表的同时能够影响HBase表
CREATE TABLE hive_hbase_emp_table(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" =":key,info:ename,info:job,info:mgr,info:hiredate,info:sal,info:comm,info:deptno")
TBLPROPERTIES ("hbase.table.name" = "hbase_emp_table");
创建完,HBase也会出现此表
CREATE TABLE emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
row format delimited fields terminated by '\t';
不能将数据直接load到Hive关联HBase的表中,因此要创建中间表
hive> load data local inpath '/home/admin/softwares/data/emp.txt'
into table emp;
INSERT INTO TABLE hive_hbase_emp_table
SELECT * FROM emp;
此时Hive和HBase两张表都插入了数据
Hive可以直接创建表关联到HBase,用中间表导入数据后插入关联表。
在HBase中已经存储了一张表hbase_emp_table,在Hive中创建关联表,就可以使用Hive来分析HBase数据
CREATE EXTERNAL TABLE relevance_hbase_emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
STORED BY
'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" =
":key,info:ename,info:job,info:mgr,info:hiredate,info:sal,info:co
mm,info:deptno")
TBLPROPERTIES ("hbase.table.name" = "hbase_emp_table");
这样就不需要通过JavaAPI读取HBase数据,然后编程做MapReduce程序处理业务逻辑,可直接通过Hive,效率提高了。遇到部分特殊情况,估计还是得通过JavaAPI。
标签:apache prope form dmi limit EDA 离线 for sele
原文地址:https://www.cnblogs.com/chenshaowei/p/12493319.html