HBase应用 | 云HBase Spark分析引擎对接云数据库POLARDB
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了HBase应用 | 云HBase Spark分析引擎对接云数据库POLARDB,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4702字,纯文字阅读大概需要7分钟。
内容图文
HBase
Spark分析引擎是云数据库HBase版提供的分析引擎,基于Spark提供的复杂分析、流式处理、机器学习的能力。Spark分析引擎可以对接阿里云的多种数据源,例如:云HBase数据库、MongoDB、Phoenix等,同时也支持对接云数据库POLARDB。POLARDB是阿里云自研的下一代关系型云数据库,100%兼容MySQL,性能最高是MySQL的6倍。本文主要介绍HBase
Spark分析引擎如何对接云数据库POLARDB。
场景介绍
POLARDB中经常会存储一些维度表信息,例如:用户维度表信息,包含用户的ID,姓名,地址等信息。此类数据的特点是数据量小,不经常改变。
Spark 中经常会存在一些海量事实表数据用于数据的分析,例如用户的通话信息、交易信息等。此类数据的特点是数据量大、增量更新。用户需要在这类数据中统计、分析挖掘有价值的内容。
例如:用户事实表数据一般包含用户的ID信息,在Spark侧对事实表统计分析时,对分析的结果需要补齐用户的其他信息,例如姓名、地址等。
这时就可以通过Spark分析引擎直接和POLARDB的数据表做关联查询和统计分析,而不用担心搬迁POLARDB的数据,以及搬迁数据带来的数据同步问题和额外的维护工作量。
下面就看下在Spark分析引擎中如何关联云数据库POLARDB。
在Spark分析引擎中创建表
本文中的SQL样例可以运行在Spark分析集群的SQL服务ThriftServer:
https://help.aliyun.com/document_detail/93902.html?spm=a2c4e.11153940.blogcont690754.15.454833521E4hrG
在Spark分析引擎中创建关联POLARDB表的语法如下:
create?table?jdbc_polordb
using?org.apache.spark.sql.jdbc
options?(
??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的连接地址:
testdb.test_table:testdb是POLARDB中创建的数据库名称,test_table为创建的表名称。
user和password分别对应登陆数据库的用户名和密码。
在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_polordb
using?org.apache.spark.sql.jdbc
options?(
?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:
总结
Spark分析引擎作为大数据计算框架可以与云数据库POLARDB很容易结合在一起,在Spark分析引擎中非常便捷地关联、分析POLARDB的数据。本文简单介绍HBase Spark分析引擎与云数据库POLARDB结合的常用操作。更多内容欢迎大家使用HBase Spark分析引擎,云数据库POLARDB。
https://help.aliyun.com/document_detail/93899.html?spm=a2c4e.11153940.blogcont690754.16.45483352yIZFhW
https://help.aliyun.com/product/58609.html?spm=a2c4e.11153940.blogcont690754.17.45483352yIZFhW
内容总结
以上是互联网集市为您收集整理的HBase应用 | 云HBase Spark分析引擎对接云数据库POLARDB全部内容,希望文章能够帮你解决HBase应用 | 云HBase Spark分析引擎对接云数据库POLARDB所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。