博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
云HBase Spark分析引擎对接云数据库POLARDB
阅读量:7067 次
发布时间:2019-06-28

本文共 3390 字,大约阅读时间需要 11 分钟。

是提供的分析引擎,基于Spark提供的复杂分析、流式处理、机器学习的能力。Spark分析引擎可以对接阿里云的多种数据源,例如:云HBase数据库、MongoDB、Phoenix等,同时也支持对接。POLARDB是阿里云自研的下一代关系型云数据库,100%兼容MySQL,性能最高是MySQL的6倍。本文主要介绍HBase Spark分析引擎如何对接云数据库POLARDB。

场景介绍

POLARDB中经常会存储一些维度表信息,例如:用户维度表信息,包含用户的ID,姓名,地址等信息。此类数据的特点是数据量小,不经常改变。

Spark 中经常会存在一些海量事实表数据用于数据的分析,例如用户的通话信息、交易信息等。此类数据的特点是数据量大、增量更新。用户需要在这类数据中统计、分析挖掘有价值的内容。
例如:用户事实表数据一般包含用户的ID信息,在Spark侧对事实表统计分析时,对分析的结果需要补齐用户的其他信息,例如姓名、地址等。
这时就可以通过Spark分析引擎直接和POLARDB的数据表做关联查询和统计分析,而不用担心搬迁POLARDB的数据,以及搬迁数据带来的数据同步问题和额外的维护工作量。
下面内容介绍在Spark分析引擎中如何对接云数据库POLARDB。

在Spark分析引擎中创建表

本文中的SQL样例可以运行在Spark分析引擎的。

在Spark分析引擎中创建关联POLARDB表的语法如下:

create table jdbc_polordbusing org.apache.spark.sql.jdbcoptions (  driver 'com.mysql.jdbc.Driver',  url 'jdbc:mysql://pc-xxx.rwlb.rds.aliyuncs.com:3306',  dbtable 'testdb.test_table',  user 'testuser',  password 'xxx')

样例使用的是Spark的JDBC DataSource API。每个参数意义如下:

jdbc:mysql://pc-xxx.rwlb.rds.aliyuncs.com:3306:POLARDB的数据库地址,从POLARDB集群中获取,可以是集群地址,主地址或者SQL加速地址,对应下图中POLARDB的连接地址:
undefined
testdb.test_table:testdb是POLARDB中创建的数据库名称,test_table为创建的表名称。
userpassword分别对应登陆数据库的用户名和密码。

在Spark分析引擎中操作表

在Spark分析引擎中创建表后,可以直接在Spark分析引擎中操作POLARDB表。表的操作常用的有:查询表、插入数据、删除表。

1、查询样例:

select * from jdbc_polordb limit 5;+-----+---------+--+| id  |  name   |+-----+---------+--+| 9   | name9   || 15  | name15  || 9   | name99  || 28  | name28  || 15  | name15  |+-----+---------+--+select * from jdbc_polordb where id >= 96;+------+-----------+--+|  id  |   name    |+------+-----------+--+| 96   | name96    || 99   | name99    || 98   | name98    || 99   | name99    || 97   | name97    || 100  | name100   || 200  | testdata  |+------+-----------+--+

2、插入数据样例:

insert into jdbc_polordb values(200, 'testdata');+---------+--+| Result  |+---------+--++---------+--+select * from jdbc_polordb where id=200;+------+-----------+--+|  id  |   name    |+------+-----------+--+| 200  | testdata  |+------+-----------+--+

3、与其他表join样例:

select j.id, j.name from jdbc_polordb j join test_parquet t on j.id = t.id;+-----+--------+--+| id  |  name  |+-----+--------+--+| 1   | name1  || 3   | name3  || 5   | name5  |+-----+--------+--+

4、 删除表样例(Spark侧删除表不会删除POLARDB中的表):

drop table jdbc_polordb;+---------+--+| Result  |+---------+--++---------+--+

Spark分析引擎查询POLARDB性能优化

Spark分析引擎中查询POLARDB表性能方面提供了如下的优化能力:

1、 列值裁剪
根据用户的SQL语句在POLARDB中获取需要字段的数据。例如,POLARDB中的表test_table有四个字段,col1、col2、col3、col4。 Spark中的查询语句为:

select col1, col3 from jdbc_polordb

则Spark分析引擎只会获取表test_table中col1和col3两个字段对应的数据,减少数据量的获取。

2、 过滤条件下推

Spark分析引擎支持常用的过滤条件下推,例如:=,>,>=,<,<=,is null, is not null,like xx%, like %xx, like %xx%,in,not。查询SQL如:

select * from jdbc_polordb where id >= 96;select * from jdbc_polordb where id=200;

Spark分析引擎会把过滤条件id=200,id>=96下推到POLARDB,减少数据量的获取,提升查询性能。

3、分区并行读取

在Spark分析引擎中创建JDBC表时可以指定分区,查询会按照分区字段和分区数并发查询。语法如下:

create table jdbc_polordbusing org.apache.spark.sql.jdbcoptions ( driver 'com.mysql.jdbc.Driver', url 'jdbc:mysql://pc-xxx.rwlb.rds.aliyuncs.com:3306', dbtable 'testdb.test_table', user 'testuser', password 'xxx', partitionColumn 'id', lowerBound '20', upperBound '80', numPartitions '5')

partitionColumn:是需要分区的字段名称,对应POLARDB中表的字段;

lowerBound:为对应字段的下界值;
upperBound:为对应字段的上界值;
numPartitions:为分区数。
在此基础上执行select * from jdbc_polordb,Spark分析引擎会下发5个并行的Job查询POLARDB数据库。下图为Spark分析引擎的并行Job:
ss

总结

Spark分析引擎作为大数据计算框架可以与云数据库POLARDB很容易结合在一起,在Spark分析引擎中非常便捷地关联、分析POLARDB的数据。本文简单介绍HBase Spark分析引擎与云数据库POLARDB结合的常用操作。更多内容欢迎大家使用,。

转载地址:http://ayall.baihongyu.com/

你可能感兴趣的文章
SASS入门
查看>>
Javascript MV*模式
查看>>
【JavaScript】【函数】蛛丝马迹
查看>>
Windows Media Center SDK 在 GitHub 上发布
查看>>
原创C# Winform+DevExpress皮肤框架
查看>>
C#加载shellcode
查看>>
单季营收破千亿!中国首个!阿里要逆天
查看>>
一张图教你弄清楚linux虚拟机的静态IP设置原理 VMnet8 ...
查看>>
主讲人—周梦康(楚松)系列技术直播
查看>>
PostgreSQL Heap Only Tuple - HOT (降低UPDATE引入的索引写IO放大) ...
查看>>
SpringBoot(十六)_springboot整合JasperReport6.6.0
查看>>
牵扯256万人!国内一AI公司人脸识别数据泄露
查看>>
Spring cloud配置客户端(二)
查看>>
数字对讲系统开发札记(前端linux c 后端 c#)
查看>>
UMind 1.0 发布
查看>>
阿里云POLARDB如何帮助猿辅导打造“孩子喜欢老师好”的网课平台? ...
查看>>
Nginx+kodexplorer(可道云部署纪要)
查看>>
C++构造函数的default和delete
查看>>
如何利用 CSS 动画原理,在页面上表现日蚀现象
查看>>
中美5G合作又遇阻,英特尔和紫光展锐合作终止
查看>>