集成spark+hive+hbase思路以及遇到的坑

一.集成效果

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路径

    原文作者:小mirror
    原文地址: https://zhuanlan.zhihu.com/p/29427792
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞