业务背景
很多统计需求是根据现有存储进行统计分析:
1、关系型数据库存储基本关系数据,MySQL、oracle、pg等。
2、非关系型数据库存储详细数据,MongoDB、HBase、ES等。
解决方案
通过spark引擎加载多源数据,进行统计分析。
处理流程图
代码示例
//加载jdbc数据
Dataset<Row> userDataSet = sqlContext.read().format("jdbc")
.option("url", "")//链接jdbc地址
.option("query", "select id, user_name from user")
.option("user", "root")
.option("password", "111111")
.load();
userDataSet .createOrReplaceTempView("userView"); //创建虚拟映射
//加载 hbase 数据 详细hbase如何加载请参考spark加载hbase文章
Dataset<Row> logDataSet = sparkSession.read()
.format("org.apache.hadoop.hbase.spark")
.option(HBaseTableCatalog.tableCatalog(), "logCataLog 日志数据")
.load();
logDataSet.createOrReplaceTempView("logDataView");
Dataset<Row> logListDataSet = sqlContext.sql("select user_id, loginfo from logDataView");
logListDataSet.createOrReplaceTempView("logListDataView");
//关联查询
Dataset<Row> userLog = sqlContext.sql("select * from logListDataView where user_id in (select id from userView)") //关联数据
接下来对 userLog 进行操作就可以了。