一.集成效果
1.hive与hbase集成:hive能够同步hbase的表,在hive中对表进行操作可以改变hbase的表,在hbase中插入数据,hive表也会同步数据
2.spark与hive集成:spark读取hive的元数据通过spark-sql操作hive
3.spark整合hbase:spark可以读取hbase的数据,spark-sql通过org.apache.hadoop.hive.hbase.HBaseStorageHandler映射操作hbase的数据如,hbase中有表lxw1234,数据如下:
hbase(main):025:0* scan 'lxw1234'
ROW COLUMN+CELL
lxw1234.com column=f1:c1, timestamp=1435624625198, value=name1
lxw1234.com column=f1:c2, timestamp=1435624591717, value=name2
lxw1234.com column=f2:c1, timestamp=1435624608759, value=age1
lxw1234.com column=f2:c2, timestamp=1435624635261, value=age2
lxw1234.com column=f3:c1, timestamp=1435624662282, value=job1
lxw1234.com column=f3:c2, timestamp=1435624697028, value=job2
lxw1234.com column=f3:c3, timestamp=1435624697065, value=job3
1 row(s) in 0.0350 seconds
进入spark-sql,使用如下语句建表:
CREATE EXTERNAL TABLE lxw1234 (
rowkey string,
f1 map<STRING,STRING>,
f2 map<STRING,STRING>,
f3 map<STRING,STRING>
) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,f1:,f2:,f3:")
TBLPROPERTIES ("hbase.table.name" = "lxw1234");
建好之后,就可以查询了:
spark-sql> select * from lxw1234;
lxw1234.com {"c1":"name1","c2":"name2"} {"c1":"age1","c2":"age2"}
{"c1":"job1","c2":"job2","c3":"job3"}
Time taken: 4.726 seconds, Fetched 1 row(s)
spark-sql> select count(1) from lxw1234;
1
Time taken: 2.46 seconds, Fetched 1 row(s)
spark-sql>
二.集成过程
第一步.集成hive与hbase,可以参考Hive和HBase整合用户指南和整合hive+hbase过程遇到的坑
第二步.集成spark-sql与hive集成:参考pyspark访问hive数据实战 – 51CTO.COM
第三步.集成spark-sql与hbase:参考SparkSQL读取HBase数据 – lxw的大数据田地,需要注意的是hbase相关jar包要导入到spark/conf目录下在导入spark_classpath路径