简介
分析型数据库MySQL版(AnalyticDB for MySQL),是阿里巴巴自主研发的海量数据实时高并发在线分析(Realtime OLAP)云计算服务,使得您可以在毫秒级针对千亿级数据进行即时的多维分析透视和业务探索。分析型数据库MySQL版对海量数据的自由计算和极速响应能力,能让用户在瞬息之间进行灵活的数据探索,快速发现数据价值,并可直接嵌入业务系统为终端客户提供分析服务。
本文主要介绍通过“数据工作台”使用Spark对接分析型数据库MySQL版的方法。
前置条件
- 分析型数据库已创建,数据库名为:testdb。
-
Spark集群和分析型数据库MySQL版在同一个VPC下。
进入Spark分析集群页面,选择“数据库连接”>“连接信息”,查看Spark集群的VPC ID信息。如下图:进入AnalyticDB 控制台的数据库管理,选择数据库的“更多”>“新建专有网络”,如下图:
然后选择和Spark集群相同的专有网络和专有网络交换机。
-
MySQL数据库已创建表和表组,本实例使用的表名为:test_table,表组名为:test_group。建表语句和内容如下(SQL语句可直接拷贝到DMS上执行):
#MySQL 建表组语句:
create tablegroup test_group
#MySQL 建表语句:
CREATE TABLE test_table (
name varchar(32) NULL,
age INT NULL,
score DOUBLE NULL,
primary key (name)
)
PARTITION by hash key(name) PARTITION NUM 10
TABLEGROUP test_group
#MySQL 插入数据语句:
INSERT INTO test_table VALUES('aliyun01', 1001, 10.1);
INSERT INTO test_table VALUES('aliyun02', 1002, 10.2);
INSERT INTO test_table VALUES('aliyun03', 1003, 10.3);
INSERT INTO test_table VALUES('aliyun04', 1004, 10.4);
INSERT INTO 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_adb”。
上传jar包“spark-examples-0.0.1-SNAPSHOT.jar”以及“mysql-connector-java-5.1.34.jar”到此文件夹。如下图:

步骤 2:通过“作业管理”创建并编辑作业内容
在“数据工作台”>“作业管理”中创建Spark作业,作业内容如下:
--class com.aliyun.spark.adb.SparkOnADBMySQLSparkSession
--jars /spark_on_adb/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_adb
/spark_on_adb/spark-examples-0.0.1-SNAPSHOT.jar
xxx1:10001 testdb test_table
xxx2 xxx3 spark_on_adb01
作业内容参数说明:
参数 | 说明 |
xxx1:10001 | 分析型数据库MySQL版的连接信息专有网络的“连接地址”。 |
testdb test_table | 分析型数据库MySQL版数据库名和表名。 |
xxx2 xxx3 | 分别为分析型数据库MySQL用于API访问的AccessKey ID 和AccessKeySecret。 |
spark_on_adb01 | Spark中创建映射分析型数据库 MySQL版数据库表的表名。 |
如下图:

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

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

步骤 3:通过“交互式查询”编辑查询
查询输入如下内容:
CREATE TABLE spark_on_adb02 USING org.apache.spark.sql.jdbc
options (
driver 'com.mysql.jdbc.Driver',
url 'xxx1:10001/testdb',
dbtable 'test_table',
user 'xxx2',
password 'xxx3'
)
如下图:

建表语句关键字说明:
参数 | 说明 |
xxx1:10001 | 分析型数据库MySQL版的连接信息专有网络的“连接地址”。 |
testdb test_table | 分析型数据库MySQL版数据库名和表名。 |
xxx2 xxx3 | 分别为分析型数据库MySQL用于API访问的AccessKey ID 和AccessKeySecret。 |
spark_on_adb02 | Spark中创建映射分析型数据库 MySQL版数据库表的表名。 |
步骤 4:通过“交互式查询”运行查询
编辑查询后,点击“运行”;运行成功后,在“查询内容”中输入“select * from spark_on_adb02”,然后点击“运行”验证结果,出现如下结果表示运行成功。如下图:

小结
- 本例代码可参考:SparkOnADB
- 更多样例代码可参考:Spark样例代码