云HBase Spark分析引擎对接云数据库POLARDB

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: HBase Spark分析引擎是云数据库HBase版提供的分析引擎,基于Spark提供的复杂分析、流式处理、机器学习的能力。Spark分析引擎可以对接阿里云的各种数据源,例如:云HBase数据、MongoDB、Phoenix等,同时也支持对接POLARDB数据库。

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。
在Spark分析引擎中创建关联POLARDB表的语法如下:

create table jdbc_polordb
using org.apache.spark.sql.jdbc
options (
  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_polordb
using org.apache.spark.sql.jdbc
options (
 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结合的常用操作。更多内容欢迎大家使用HBase Spark分析引擎云数据库POLARDB

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
19天前
|
关系型数据库 数据库 RDS
【瑶池数据库训练营及解决方案本周精选(探索PolarDB,参与RDS迁移、连接训练营)】(5.30-6.8)
本周精选聚焦数据库迁移训练营、快速连接云数据库RDS训练营及智能多模态搜索解决方案。为用户提供模拟教程与实战演练,学习RDS MySQL实例连接与数据管理技能,助力企业智能化发展。每周解锁数据库实战新场景,抓紧时间,精彩不容错过!
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
阿里云PolarDB与沃趣科技携手打造一体化数据库解决方案,助推国产数据库生态发展
阿里云瑶池数据库与沃趣科技将继续深化合作,共同推动国产数据库技术的持续创新与广泛应用,为行业生态的繁荣注入更强劲的技术动力。
阿里云PolarDB与沃趣科技携手打造一体化数据库解决方案,助推国产数据库生态发展
|
4月前
|
存储 NoSQL 关系型数据库
PolarDB开源数据库进阶课17 集成数据湖功能
本文介绍了如何在PolarDB数据库中接入pg_duckdb、pg_mooncake插件以支持数据湖功能, 可以读写对象存储的远程数据, 支持csv, parquet等格式, 支持delta等框架, 并显著提升OLAP性能。
196 3
|
4月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课15 集成DeepSeek等大模型
本文介绍了如何在PolarDB数据库中接入私有化大模型服务,以实现多种应用场景。实验环境依赖于Docker容器中的loop设备模拟共享存储,具体搭建方法可参考相关系列文章。文中详细描述了部署ollama服务、编译并安装http和openai插件的过程,并通过示例展示了如何使用这些插件调用大模型API进行文本分析和情感分类等任务。此外,还探讨了如何设计表结构及触发器函数自动处理客户反馈数据,以及生成满足需求的SQL查询语句。最后对比了不同模型的回答效果,展示了deepseek-r1模型的优势。
228 2
|
4月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课14 纯享单机版
PolarDB不仅支持基于“共享存储+多计算节点”的集群版,还提供类似开源PostgreSQL的单机版。单机版部署简单,适合大多数应用场景,并可直接使用PostgreSQL生态插件。通过Docker容器、Git克隆代码、编译软件等步骤,即可完成PolarDB单机版的安装与配置。具体操作包括启动容器、进入容器、克隆代码、编译软件、初始化实例、配置参数及启动数据库。此外,还有多个相关教程和视频链接供参考,帮助用户更好地理解和使用PolarDB单机版。
186 1
|
4月前
|
存储 容灾 关系型数据库
PolarDB开源数据库进阶课11 激活容灾(Standby)节点
本文介绍了如何激活PolarDB容灾(Standby)节点,实验环境依赖于Docker容器中用loop设备模拟共享存储。通过`pg_ctl promote`命令可以将Standby节点提升为主节点,使其能够接收读写请求。激活后,原Standby节点不能再成为PolarDB集群的Standby节点。建议删除对应的复制槽位以避免WAL文件堆积。相关操作和配置请参考系列文章及视频教程。
90 1
|
4月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课13 单机版转换为集群版
本文介绍如何将“本地存储实例”转换为“共享存储实例”,依赖于先前搭建的实验环境。主要步骤包括:准备PFS二进制文件、格式化共享盘为pfs文件系统、启动pfsd服务、停库并拷贝数据到pfs内、修改配置文件,最后启动实例。通过这些操作,成功实现了从本地存储到共享存储的转换,并验证了新实例的功能。相关系列文章和视频链接提供了更多背景信息和技术细节。
77 0
|
25天前
|
存储 Cloud Native 关系型数据库
PolarDB开源:云原生数据库的架构革命
本文围绕开源核心价值、社区运营实践和技术演进路线展开。首先解读存算分离架构的三大突破,包括基于RDMA的分布式存储、计算节点扩展及存储池扩容机制,并强调与MySQL的高兼容性。其次分享阿里巴巴开源治理模式,涵盖技术决策、版本发布和贡献者成长体系,同时展示企业应用案例。最后展望技术路线图,如3.0版本的多写多读架构、智能调优引擎等特性,以及开发者生态建设举措,推荐使用PolarDB-Operator实现高效部署。
119 3
|
1月前
|
SQL 关系型数据库 分布式数据库
PolarDB开源数据库入门教程
PolarDB是阿里云推出的云原生数据库,基于PostgreSQL、MySQL和Oracle引擎构建,具备高性能、高扩展性和高可用性。其开源版采用计算与存储分离架构,支持快速弹性扩展和100%兼容PostgreSQL/MySQL。本文介绍了PolarDB的安装方法(Docker部署或源码编译)、基本使用(连接数据库、创建表等)及高级特性(计算节点扩展、存储自动扩容、并行查询等)。同时提供了性能优化建议和监控维护方法,帮助用户在生产环境中高效使用PolarDB。
414 19
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
PolarDB开源:云原生数据库的新篇章
阿里云自研的云原生数据库PolarDB于2023年5月正式开源,采用“存储计算分离”架构,具备高性能、高可用及全面兼容性。其开源版本提供企业级数据库解决方案,支持MySQL、PostgreSQL和Oracle语法,适用于高并发OLTP、核心业务系统等场景。PolarDB通过开放治理与开发者工具构建完整生态,并展望更丰富的插件功能与AI集成,为中国云原生数据库技术发展贡献重要力量。
229 17

热门文章

最新文章

下一篇
oss创建bucket