简介
POLARDB 是阿里云自研的下一代关系型云数据库,100% 兼容 MySQL,存储容量最高可达100 TB,性能最高提升至MySQL 的 6 倍,单库最多可扩展到 16 个节点,适用于企业多样化的数据库应用场景。本文主要介绍通过“数据工作台”使用Spark对接POLARDB的方法。
前置条件
-
Spark集群和POLARDB在同一个VPC下。
进入Spark分析集群页面,选择“数据库连接”>“连接信息”,查看Spark集群的VPC ID信息。如下图: -
Spark集群关联POLARDB。
进入Spark分析集群页面,选择“关联数据库”>“关联POLARDB”页面中,支持关联以及取消关联。如下图: -
POLARDB已创建表,本实例使用的POLARDB表名为:test_table,数据库名为:testdb。建表语句和内容如下:
#建表语句:
CREATE TABLE `testdb`.`test_table` (
`name` varchar(32) NULL,
`age` INT NULL,
`score` DOUBLE NULL
)
#插入数据语句:
INSERT INTO `testdb`.`test_table` VALUES('aliyun01', 1001, 10.1);
INSERT INTO `testdb`.`test_table` VALUES('aliyun02', 1002, 10.2);
INSERT INTO `testdb`.`test_table` VALUES('aliyun03', 1003, 10.3);
INSERT INTO `testdb`.`test_table` VALUES('aliyun04', 1004, 10.4);
INSERT INTO `testdb`.`test_table` VALUES('aliyun05', 1005, 10.5);
使用“数据工作台”>“作业管理”运行样例
步骤 1:通过“资源管理”上传样例代码Jar包
下载样例代码jar包“spark-examples-0.0.1-SNAPSHOT.jar”以及依赖jar包到本地目录。
wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_example/spark-examples-0.0.1-SNAPSHOT.jar
wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_connectors/mysql-connector-java-5.1.34.jar
在“数据工作台”>“资源管理”中添加文件夹“spark_on_polardb”。
上传jar包“spark-examples-0.0.1-SNAPSHOT.jar”以及“mysql-connector-java-5.1.34.jar”到此文件夹。如下图:

步骤 2:通过“作业管理”创建并编辑作业内容
在“数据工作台”>“作业管理”中创建Spark作业,作业内容如下:
--class com.aliyun.spark.polardb.SparkOnPOLARDBSparkSession
--jars /spark_on_polardb/mysql-connector-java-5.1.34.jar
--driver-memory 1G
--driver-cores 1
--executor-cores 1
--executor-memory 2G
--num-executors 1
--name spark_on_polardb
/spark_on_polardb/spark-examples-0.0.1-SNAPSHOT.jar
pc-xxx.rwlb.rds.aliyuncs.com:3306 testdb test_table xxx1 xxx2 spark_on_polardb_table
作业内容参数说明:
参数 | 说明 |
pc-xxx.rwlb.rds.aliyuncs.com:3306 | POLARDB的“集群地址”、“主地址”和“SQL加速地址”三个之中任选一个。 |
testdb test_table | 分别为POLARDB中的数据库名和表名。 |
xxx1 xxx2 | 分别为POLARDB中的数据库登录的用户名和密码。 |
spark_on_polardb_table | Spark中创建映射POLARDB表的表名。 |
如下图:

步骤 3:通过“作业管理”运行作业并查看结果
作业编辑完成后点击“运行”,选择Spark集群。运行状态会在下侧显示,如图:

运行成功后点击“YarnUI”,翻到最后看到如下结果表明Spark读取POLARDB成功。如下:
+--------+----+-----+
| name| age|score|
+--------+----+-----+
|aliyun01|1001| 10.1|
+--------+----+-----+
使用“交互式查询”运行样例
步骤 1:通过“会话管理”创建会话
在“数据工作台”>“会话管理”中点击“创建会话”。填写“会话名称”:spark_on_polardb, 选择需要执行的Spark集群。
点击“确认”后,编辑“会话内容”,内容如下:
--name spark_on_polardb
--driver-memory 1G
--driver-cores 1
--executor-cores 1
--executor-memory 2G
--num-executors 1
--jars /spark_on_polardb/mysql-connector-java-5.1.34.jar
内容编辑完成后,点击“运行”(此处点击运行是为了下一步骤中可以选择会话“spark_on_polardb”)。
如下图:

步骤 2:通过“交互式查询”创建查询
进入“数据工作台”>“交互式查询”,在“会话列表”下拉框中选择“spark_on_polardb”,然后点击“新建查询”。填写“查询名称”:spark_on_polardb,“查询类型”选择“sql”。如下图:

步骤 3:通过“交互式查询”编辑查询
查询输入如下内容:
create table spark_on_polardb_t01
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 'xxx1',
password 'xxx2'
)
如下图:

建表语句关键字说明:
关键字 | 说明 |
pc-xxx.rwlb.rds.aliyuncs.com:3306 | POLARDB的“集群地址”、“主地址”和“SQL加速地址”三个之中任选一个。 |
testdb test_table | 分别为POLARDB中的数据库名和表名。 |
xxx1 xxx2 | 分别为POLARDB中的数据库登录的用户名和密码。 |
spark_on_polardb_t01 | Spark中创建映射POLARDB表的表名。 |
步骤 4:通过“交互式查询”运行查询
编辑查询后,点击“运行”;运行成功后,在“查询内容”中输入“select * from spark_on_polardb_t01”,然后点击“运行”验证结果,出现如下结果表示运行成功。如下图:

小结
- 本例代码可参考:SparkOnPOLARDBSparkSession.scala
- 更多样例代码可参考:Spark样例代码