全部产品
云市场

Spark对接分析型数据库PostgreSQL版快速入门

更新时间:2019-05-13 11:21:50

简介

AnalyticDB for PostgreSQL(原HybridDB for PostgreSQL)为您提供简单、快速、经济高效的 PB 级云端数据仓库解决方案。
本文主要介绍通过“数据工作台”使用Spark对接分析型数据库PostgreSQL版的方法。

前置条件

  1. Spark集群和分析型数据库PostgreSQL版在同一个VPC下。
    进入Spark分析集群页面,选择“数据库连接”>“连接信息”,查看Spark集群的VPC ID信息。如下图:
    然后在阿里云控制台进入“专有网络VPC”,找到Spark集群的VPC ID对应的IPv4网段。如下图:
    最后进入PostgreSQL配置白名单,添加上述IPv4网段。如下图:
  2. PostgreSQL数据库已创建表,本实例使用的表名为:test_table,通过如下方法在数据库中创建表:
    下载样例代码“common-test-0.0.1-SNAPSHOT-shaded.jar”到ECS集群上的位置为:/opt/jars/test/common-test-0.0.1-SNAPSHOT-shaded.jar
    注意:ECS集群需要和数据在同一个VPC下,且数据库配置了ECS的白名单。
    1. wget https://spark-home.oss-cn-shanghai.aliyuncs.com/common_test/common-test-0.0.1-SNAPSHOT-shaded.jar
    然后运行:
    1. java -cp /opt/jars/test/common-test-0.0.1-SNAPSHOT-shaded.jar com.aliyun.adb.CreateSampleTable 'jdbc:postgresql://xxx1:3432/postgres' xxx2 xxx3 test_table
    参数说明:
    参数 说明
    xxx1:3432 分析型数据库PostgreSQL版的数据库连接的“内网地址”和“内网端口”。
    postgres test_table 分析型数据库PostgreSQL版数据库名和表名。
    xxx2 xxx3 分别为分析型数据库PostgreSQL版登陆数据库的用户名和密码。

显示如下结果说明测试表创建成功:

  1. aliyun02 102 10.0
  2. aliyun04 104 10.0
  3. aliyun01 101 10.0
  4. aliyun03 103 10.0
  5. aliyun05 105 10.0

本实例中使用的表结构为:

  1. "name" varchar(32) NULL,
  2. "age" int NULL,
  3. "score" double precision NULL

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

步骤 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/postgresql-42.2.5.jar

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

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

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

  1. --class com.aliyun.spark.adb.SparkOnADBPostgreSQLSparkSession
  2. --jars /spark_on_adb/postgresql-42.2.5.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_adb
  9. /spark_on_adb/spark-examples-0.0.1-SNAPSHOT.jar
  10. xxx1:3432 postgres public test_table xxx2 xxx3 spark_on_adb_pg01

作业内容参数说明:

参数 说明
xxx1:3432 分析型数据库PostgreSQL版的数据库连接的“内网地址”和“内网端口”。
postgres public test_table 分别为分析型数据库 PostgreSQL版的数据库名、schema(模式)名和表名。
xxx2 xxx3 分别为分析型数据库PostgreSQL版的数据库登陆的用户名和密码。
spark_on_adb_pg01 Spark中创建映射分析型数据库PostgreSQL版数据库表的表名。

如下图:

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

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

运行成功后点击“YarnUI”,翻到最后看到如下结果表明Spark读取分析型数据库PostgreSQL成功。如下:

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

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

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

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

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

  1. --name spark_on_adb
  2. --driver-memory 1G
  3. --driver-cores 1
  4. --executor-cores 1
  5. --executor-memory 2G
  6. --num-executors 1
  7. --jars /spark_on_adb/postgresql-42.2.5.jar

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

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

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

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

查询输入如下内容:

  1. CREATE TABLE spark_on_adb_pg02 USING org.apache.spark.sql.jdbc
  2. options (
  3. driver 'org.postgresql.Driver',
  4. url 'xxx1:3432/postgres',
  5. dbtable 'public.test_table',
  6. user 'xxx2',
  7. password 'xxx3'
  8. )

建表语句关键字说明:

参数 说明
xxx1:3432 分析型数据库PostgreSQL版的数据库连接的“内网地址”和“内网端口”。
postgres public test_table 分别为分析型数据库 PostgreSQL版的数据库名、schema(模式)名和表名。
xxx2 xxx3 分别为分析型数据库PostgreSQL版的数据库登陆的用户名和密码。
spark_on_adb_pg02 Spark中创建映射分析型数据库PostgreSQL版数据库表的表名。

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

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

小结