You need to enable JavaScript to run this app.
导航
配置 Greenplum 数据源
最近更新时间:2024.12.09 11:49:09首次发布时间:2023.11.01 17:27:16

Greenplum 数据源为您提供写入 Greenplum 数据的单向通道能力,实现将不同数据源上的数据,通过离线数据集成方式,同步到 Greenplum 数据库中。
本文为您介绍 DataSail 的 Greenplum 数据同步的能力支持情况。

1 支持的 Greenplum 版本

  • 离线写:
    • 支持自建 Greenplum 数据库,6.x 版本。

2 使用限制

  1. 当前仅支持离线写 Greenplum 数据,后续敬请期待离线读 Greenplum 能力。
  2. 子账号新建数据源时,需要有项目的管理员角色,方可以进行新建数据源操作。各角色对应权限说明,详见:管理成员

3 通用要求

  • 为确保同步任务使用的独享集成资源组具有 Greenplum 数据库节点的网络访问能力,您需将独享集成资源组和 Greenplum 数据库节点网络打通,详见网络连通解决方案
  • 若通过 VPC 网络访问,则独享集成资源组所在 VPC 中的 IPv4 CIDR 地址,需加入到 Greenplum 访问白名单中:
    1. 确认集成资源组所在的 VPC:
      Image
    2. 查看 VPC 的 IPv4 CIDR 地址:

      注意

      若考虑安全因素,减少 IP CIDR 的访问范围,您至少需要将集成资源组绑定的子网下的 IPv4 CIDR 地址加入到数据库白名单中。

      Image
    3. 将获取到的 IPv4 CIDR 地址添加进 Greenplum 数据库白名单中。
  • 若是通过公网形式访问 Greenplum 数据库,则您需进行以下操作:
    • 独享集成资源组开通公网访问能力,操作详见开通公网
    • 并将公网 IP 地址,添加进 Greenplum 数据库白名单中。

4 支持的字段类型

当前主要字段支持情况如下

字段类型

离线写(Greenplum Writer)

BOOL

支持

BOOLEAN

支持

INT

支持

INTEGER

支持

BIGINT

支持

INT2

支持

INT4

支持

INT8

支持

SERIAL

支持

SERIAL4

支持

BIGSERIAL

支持

LARGESERIAL

支持

DECIMAL

支持

NUMERIC

支持

FLOAT

支持

DOUBLE

支持

MONEY

支持

FLOAT4

支持

FLOAT8

支持

DOUBLE PRECISION

支持

DEC

支持

REAL

支持

CHAR

支持

CHARACTER

支持

CHARACTER VARYING

支持

VARCHAR

支持

TEXT

支持

BIT

支持

JSON

支持

JSONB

支持

XML

支持

BYTEA

支持

DATE

支持

TIME

支持

TIMETZ

支持

TIME WITH TIME ZONE

支持

TIMESTAMP

支持

TIMESTAMPTZ

支持

TIMESTAMP WITH TIME ZONE

支持

5 数据同步任务开发

5.1 数据源注册

新建数据源操作详见配置数据源,下面为您介绍用连接串方式配置 Greenplum 数据源信息:

注意

Greenplum 侧如果是白名单访问机制,则不同网络环境的连接串地址,需要添加不同的 IP 地址到数据库白名单中,确保集成资源组使用的 VPC 与 Greenplum 网络能互通:

  • 如果使用的是公网连接串访问,则需要给集成资源组添加公网 IP,并将公网 IP 地址加入到白名单中。
  • 如果使用的是私网连接串访问,则需要将资源组 VPC 下的 IPv4 CIDR 地址加入到白名单中。

详见网络连通解决方案

参数

说明

基本配置

数据源类型

Greenplum

接入方式

连接串

数据源名称

数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。

参数配置

主机名或IP地址

Greenplum 数据库的主机名称或者 IP 地址。

端口

连接主机的端口号。

数据库名

输入已创建的 Greenplum 数据库名称。

用户名

有权限访问数据库的用户名信息。

密码

输入用户名对应的密码信息。

5.2 新建离线任务

Greenplum 数据源测试连通性成功后,进入到数据开发界面,开始新建 Greenplum 相关通道任务。
新建任务方式详见离线数据同步

5.3 可视化配置说明

任务创建成功后,您可根据实际场景,配置 Greenplum 离线写通道任务。

5.3.1 Greenplum 离线写

Image
数据目标端选择 Greenplum,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

参数

说明

*目标类型

数据去向目标类型选择 Greenplum。

*数据源名称

已在数据源管理界面注册的 Greenplum 数据源,下拉可选。
若还未建立相应数据源,可单击数据源管理按钮,前往创建 Greenplum 数据源。

*Schema 目录

数据库下已有的 Schema 目录信息,下拉可选。

*数据表

在数据源的 Schema 名称下,选择需数据写入的数据表名信息,下拉可选。

写入前准备语句

在执行该数据集成任务前,需要率先执行的 SQL 语句,通常是为了使任务重跑时支持幂等。
例如您可以通过填写语句,清空表中的某些旧数据,清空完成后,再执行集成任务写入新的数据。如删除 date='${date}' 的数据:delete from table_name where date='${date}'
语句填写完成后,您可单击右侧的校验按钮,进行语句校验是否符合逻辑。

说明

可视化通道任务配置中只允许执行一条写入前准备语句。

写入后准备语句

执行数据同步任务之后执行的 SQL 语句。例如写入完成后插入某条特殊的数据,标志导入任务执行结束。
语句填写完成后,您可单击右侧的校验按钮,进行语句校验是否符合逻辑。

说明

可视化通道任务配置中只允许执行一条写入后准备语句。

*数据写入方式

下拉选择数据写入 Greenplum 的方式:

  • insert into: 当主键/唯一性索引冲突时会无法写入冲突的行,任务会运行失败。

5.3.2 字段映射

数据来源和目标端配置完成后,需要指定来源和目标端的字段映射关系,根据字段映射关系,数据集成任务将源端字段中的数据,写入到目标端对应字段中。
您可通过以下三种方式操作字段映射关系:

  • 自动添加:单击自动添加按钮,根据两端数据表信息,可以自动填充来源和目标的字段信息。
  • 手动添加:单击手动添加按钮,可以手动编辑来源和目标的字段信息,可以逐个添加。
  • 移动\删除字段:您也可以根据需要移动字段映射顺序或删除字段。

5.4 DSL 配置说明

Greenplum 数据源支持使用脚本模式(DSL)的方式进行配置。
在某些复杂场景下,或当数据源类型暂不支持可视化配置时,您可通过任务脚本的方式,按照统一的 Json 格式,编写 Greenplum Writer 参数脚本代码,来运行数据集成任务。

5.4.1 进入 DSL 模式

进入 DSL 模式操作流程,可详见 MySQL 数据源-4.4.1 进入DSL 模式

5.4.2 Greenplum Writer

根据实际情况替换 Greenplum 批式写相应参数,Greenplum 批式写脚本示例如下:

// **************************************
// 变量使用规则如下:
// 1.自定义参数变量: {{}}, 比如{{number}}
// 2.系统时间变量${}, 比如 ${date}、${hour}
// **************************************
{
    // [required] dsl version, suggest to use latest version
    "version": "0.2",
    // [required] execution mode, supoort streaming / batch now
    "type": "batch",
    // reader config
    "reader": {
        // [required] datasource type
        "type": "xx",
        // [optional] datasource id, set it if you have registered datasource
        "datasource_id": null,
        // [required] user parameter
        "parameter": {
            // ********** please write here **********
            // "key" : value
          
        }
    },
    // writer config
    "writer": {
        // [required] datasource type
        "type": "greenplum",
        // [optional] datasource id, set it if you have registered datasource
        "datasource_id": 12345,
        // [required] user parameter
        "parameter": {
            // ********** please write here **********
            // "key" : value
            "table_schema":"public",
            "table_name":"table_1",
            "pre_sql":[""],
            "post_sql":[""],
            "write_mode":"directlyInsert",
            "columns": [
                {
                    "name": "name_sample",
                    "type": "type_sample"
                }
            ]
        }
    },
    // common config
    "common": {
        // [required] user parameter
        "parameter": {
            // ********** please write here **********
            // "key" : value
        }
    }
}

Writer 参数说明,其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数:

参数名

描述

默认值

*type

数据源类型,对于 Greenplum 类型,填写: greenplum

*datasource_id

注册的 Greenplum 数据源 ID,可以在项目控制台 > 数据源管理界面中查找。

*table_schema

填写 Greenplum 数据库中的 Schema 名称。

*table_name

填写需要同步的数据表名称,一个数据集成任务只能同步数据到一张目标表。

*write_mode

导入模式,只支持配置为 directlyInsert,即 insert into 模式,当主键/唯一性索引冲突时会写不进去冲突的行,任务会运行失败。

pre_sql_list

写入前准备语句:在执行数据集成任务前,率先执行的 SQL 语句。此语句通常是为了使任务重跑时支持幂等。
例如执行前清空表中的某些旧数据,清空完成后,在执行集成任务写入新的数据,例如删除 date='${date}' 的数据:["delete from table_name where date='${date}'", "xxx"]

说明

DSL 模式支持配置多条写入前准备语句,多条语句之间用英文逗号分隔。

post_sql_list

写入后准备语句:执行数据同步任务后执行的 SQL 语句。例如数据写入完成后,插入某条特殊的数据,标志导入任务执行结束。
示例:["insert into table_name (col1,col2..) values(values1,values2)", "xxx"]

说明

DSL 模式支持配置多条写入后准备语句,多条语句之间用英文逗号分隔。

*columns

所配置的表中需要同步的列名集合,使用 JSON 的数组描述字段信息。

  • 支持列裁剪:列可以挑选部分列进行导出。
  • 支持列换序:列可以不按照表 Schema 信息顺序进行导出。
  • column 必须显示指定同步的列集合,不允许为空。
  • column 必须与导入的源端列集合对齐,不允许多列或少列。

5.5 高级参数说明

  • 对于可视化通道任务,写参数需要加上 job.writer. 前缀,如下图所示:
    Image
  • 对于 DSL 任务,写参数请配置到 writer.parameter 下,直接输入参数名称和参数值。如下图所示:
    Image

5.5.1 Greenplum 离线写

离线写支持以下高级参数,您可根据实际情况进行配置:

参数名

描述

默认值

job.writer.write_batch_interval

一次性批量提交的数据条数,该值可以减少与 Greenplum 网络的交互次数并提升整体吞吐量。如果该值设置过大可能会导致数据同步进程 OOM。

100

job.writer.write_retry_times

Greenplum 写入失败时重试次数。

3

job.writer.retry_interval_seconds

写入失败后两次重试的时间间隔,单位秒

write_batch_interval / 10