文档

Spark对接DRDS快速入门

更新时间:

简介

分布式关系型数据库服务(Distributed Relational Database Service,简称 DRDS)是阿里巴巴致力于解决单机数据库服务瓶颈问题而自主研发推出的分布式数据库产品。DRDS 高度兼容 MySQL 协议和语法,支持自动化水平拆分、在线平滑扩缩容、弹性扩展、透明读写分离,具备数据库全生命周期运维管控能力。DRDS 前身为淘宝 TDDL,是近千核心应用首选组件。
本文主要介绍通过“数据工作台”使用Spark对接DRDS的方法。

前置条件

  1. Spark集群和DRDS在同一个VPC下。
    进入Spark分析集群页面,选择“数据库连接”>“连接信息”,查看Spark集群的VPC ID信息。如下图:
  2. DRDS已配置Spark集群的白名单。
    首先在阿里云控制台进入“专有网络VPC”,找到Spark集群的VPC ID对应的IPv4网段。如下图:

    然后进入DRDS集群配置白名单,添加上述IPv4网段。如下图:
  3. DRDS已创建表,本实例使用的DRDS表名为:test_table,数据库名为:drds_db。建表语句和内容如下(SQL语句可直接拷贝到DMS上执行):

    1. #建表语句:
    2. CREATE TABLE `drds_db`.`test_table` (
    3. `name` varchar(32) NULL,
    4. `age` INT NULL,
    5. `score` DOUBLE NULL
    6. )
    7. #插入数据语句:
    8. INSERT INTO `drds_db`.`test_table` VALUES('aliyun01', 1001, 10.1);
    9. INSERT INTO `drds_db`.`test_table` VALUES('aliyun02', 1002, 10.2);
    10. INSERT INTO `drds_db`.`test_table` VALUES('aliyun03', 1003, 10.3);
    11. INSERT INTO `drds_db`.`test_table` VALUES('aliyun04', 1004, 10.4);
    12. INSERT INTO `drds_db`.`test_table` VALUES('aliyun05', 1005, 10.5);

使用“数据工作台”>“作业管理”运行样例

步骤 1:通过“资源管理”上传样例代码Jar包

下载样例代码jar包“spark-examples-0.0.1-SNAPSHOT.jar”以及依赖jar包到本地目录。

  1. wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_example/spark-examples-0.0.1-SNAPSHOT.jar
  2. wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_connectors/mysql-connector-java-5.1.34.jar

在“数据工作台”>“资源管理”中添加文件夹“spark_on_drds”。
上传jar包“spark-examples-0.0.1-SNAPSHOT.jar”以及“mysql-connector-java-5.1.34.jar”到此文件夹。如下图:

步骤 2:通过“作业管理”创建并编辑作业内容

在“数据工作台”>“作业管理”中创建Spark作业,作业内容如下:

  1. --class com.aliyun.spark.drds.SparkOnDRDSSparkSession
  2. --jars /spark_on_drds/mysql-connector-java-5.1.34.jar
  3. --driver-memory 1G
  4. --driver-cores 1
  5. --executor-cores 1
  6. --executor-memory 2G
  7. --num-executors 1
  8. --name spark_on_drds
  9. /spark_on_drds/spark-examples-0.0.1-SNAPSHOT.jar
  10. xxx.drds.aliyuncs.com:3306 drds_db test_table xxx1 xxx2 spark_on_drds

作业内容参数说明:

参数 说明
xxx.drds.aliyuncs.com:3306 DRDS的数据库“VPC地址”对应的“内网地址”和“内网端口”。
drds_db test_table 分别为DRDS中的数据库名和表名。
xxx1 xxx2 分别为DRDS中的数据库登录的用户名和密码。
spark_on_drds Spark中创建映射DRDS表的表名。

如下图:

步骤 3:通过“作业管理”运行作业并查看结果

作业编辑完成后点击“运行”,选择Spark集群。运行状态会在下侧显示,如图:

运行成功后点击“YarnUI”,翻到最后看到如下结果表明Spark读取DRDS成功。如下:

  1. +--------+----+-----+
  2. | name| age|score|
  3. +--------+----+-----+
  4. |aliyun01|1001| 10.1|
  5. +--------+----+-----+

使用“交互式查询”运行样例

步骤 1:通过“会话管理”创建会话

在“数据工作台”>“会话管理”中点击“创建会话”。填写“会话名称”:spark_on_drds, 选择需要执行的Spark集群。

点击“确认”后,编辑“会话内容”,内容如下:

  1. --name spark_on_drds
  2. --driver-memory 1G
  3. --driver-cores 1
  4. --executor-cores 1
  5. --executor-memory 2G
  6. --num-executors 1
  7. --jars /spark_on_drds/mysql-connector-java-5.1.34.jar

内容编辑完成后,点击“运行”(此处点击运行是为了下一步骤中可以选择会话“spark_on_drds”)。

步骤 2:通过“交互式查询”创建查询

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

步骤 3:通过“交互式查询”编辑查询

查询输入如下内容:

  1. CREATE TABLE spark_on_drds01 USING org.apache.spark.sql.jdbc
  2. options (
  3. driver 'com.mysql.jdbc.Driver',
  4. url 'jdbc:mysql://xxx.drds.aliyuncs.com:3306',
  5. dbtable 'drds_db.test_table',
  6. user 'xxx1',
  7. password 'xxx2'
  8. )

如下图:

建表语句关键字说明:

关键字 说明
xxx.drds.aliyuncs.com:3306 DRDS的数据库“VPC地址”对应的“内网地址”和“内网端口”。
drds_db test_table 分别为DRDS中的数据库名和表名。
xxx1 xxx2 分别为DRDS中的数据库登录的用户名和密码。
spark_on_drds01 Spark中创建映射DRDS表的表名。

步骤 4:通过“交互式查询”运行查询

编辑查询后,点击“运行”;运行成功后,在“查询内容”中输入“select * from spark_on_drds01”,然后点击“运行”验证结果,出现如下结果表示运行成功。如下图:

小结

  • 本页导读 (1)
文档反馈