You need to enable JavaScript to run this app.
导航

配置 StarRocks 数据源

最近更新时间2023.11.24 14:46:21

首次发布时间2023.07.24 17:44:55

StarRocks 数据源,同步火山引擎 E-MapReduce(EMR)引擎中 StarRocks 集群数据库下的数据,为您提供离线、流式任务将数据写入 StarRocks 的单向通道能力。
本文为您介绍 DataSail 中 StarRocks 数据源配置、可视化配置能力说明。

1 支持的版本

支持采集 EMR-3.1.1 及以上 StarRocks 集群版本中的数据。

2 使用前提

  1. 子账号新建数据源时,需要有项目的管理员角色,方可以进行新建数据源操作。各角色对应权限说明,详见:管理成员

  2. 访问 EMR-StarRocks 数据源,需先在项目控制台 > 服务绑定 > 引擎绑定中,绑定相应 EMR-StarRocks 集群。详见创建项目

  3. StarRocks 数据源配置时,EMR 集群对应的集群信息、数据库用户名密码需填写正确:

    注意

    填写的数据库用户名信息,必须拥有相应数据库的 Admin 权限,来保障任务数据能够正常写入 StarRocks 中。

    • 必须有账户密码,其中 root 账户无密码,不符合安全规范,数据源配置时无法使用。

    • 用户名密码获取方式,您可在 EMR 集群详情 > 服务列表 > StarRocks 服务名称 > 服务参数 > starrocks-env 参数文件下,看到 StarRocks 已经预置了一个账户和密码,推荐使用该账户/密码来配置 StarRocks 数据源。

      其余用户创建方式详见 CREATE USER

  4. EMR StarRocks 集群和独享集成资源组中的 VPC 必须一致

    • 其 VPC 下的子网和安全组也尽可能保持一致。

    • 若 VPC 不一致时,则需要在 StarRocks 集群的安全组上,在入方向规则处,添加独享集成资源组子网的 IP 网段:

      1. 在 EMR StarRocks 集群详情界面,进入集群所在的安全组,并添加入方向规则。

      2. 在弹窗中,填写独享集成资源组子网的 IP 网段:

3 支持的字段类型与使用限制

支持大部分 StarRocks 类型,包括数值类型、字符串类型、日期类型:

字段类型描述支持情况
数值类型

TINYINT

1 字节有符号整数,范围 [-128, 127]

支持

SMALLINT2 字节有符号整数,范围 [-32768, 32767]支持
INT4 字节有符号整数,范围 [-2147483648, 2147483647]。支持
BIGINT8 字节有符号整数,范围 [-9223372036854775808, 9223372036854775807]支持
LARGEINT16 字节有符号整数,范围 [-2^127 + 1 ~ 2^127 - 1]不支持

DECIMAL

DECIMAL(P [, S])
高精度定点数,P 代表一共有多少个有效数字 (precision),S 代表小数点后最多有多少数字 (scale)。
1.19.0 及以后版本对 decimal 类型的(P,S)有默认值设置,默认是 decimal(10,0)

支持

DOUBLE8 字节浮点数。支持
FLOAT4 字节浮点数。支持

BOOLEAN

BOOL, BOOLEAN
与 TINYINT 一样,0 代表 false,1 代表 true。

不支持

字符串类型

CHAR

CHAR(M)
定长字符串,M 代表的是定长字符串的长度。M 的范围是 1~255。

支持

VARCHAR

VARCHAR(M)
变长字符串。M 代表变长字符串长度,单位:字节,默认取值为 1

  • 对于 StarRocks 2.1 之前的版本,M 的取值范围为 1~65533。

  • 【公测中】自 StarRocks 2.1 版本开始,M 的取值范围为 1~1048576。

支持

STRING字符串,最大长度 65533 字节支持
时间类型

DATE

日期类型,目前的取值范围是 ['0000-01-01', '9999-12-31']。
默认的打印形式是 'YYYY-MM-DD'。

支持

DATETIME

日期时间类型,取值范围是 ['0000-01-01 00:00:00', '9999-12-31 23:59:59']。
打印的形式是'YYYY-MM-DD HH: MM: SS'

支持

其他类型
ARRAY数组(Array) 是数据库中的一种扩展数据类型,其相关特性在众多数据库系统中均有支持,可以广泛的应用于 A/B Test 对比、用户标签分析、人群画像等场景。StarRocks 当前支持多维数组嵌套、数组切片、比较、过滤等特性。不支持
BITMAPBITMAP 与 HLL (HyperLogLog) 类似,常用来加速 count distinct 的去重计数使用。不支持

JSON

JSON 数据层次清晰,结构灵活易于阅读和处理,广泛应用于数据存储和分析场景。
JSON 支持的数据类型为数字类型(NUMBER)、字符串类型(STRING)、布尔类型(BOOLEAN)、数组类型(ARRAY)、对象类型(OBJECT),以及 NULL 值。

不支持

HLL

HyperLogLog 类型,用于近似去重。
HLL 类型使用的存储空间取决于 HLL 中插入的 hash 值的去重数量。
分为三种情况考虑:

  • HLL 为空: 未插入任何值,HLL 的存储代价最小,占用 80 字节。

  • HLL 中不重复 hash 值的个数 <=160 最大代价为: 80 + 160 * 8 = 1360 字节。

  • HLL 中不重复 hash 值的个数 >160 存储代价固定为: 80 + 16 * 1024 = 16464 字节。

不支持

4 数据同步任务开发

下文将为您介绍 StarRocks 数据集成同步任务的配置流程:

4.1 数据源注册

新建数据源操作详见配置数据源,下面为您介绍配置 StarRocks 数据源相关信息:

注意

数据源注册时,需注意以下几点:

  1. EMR StarRocks 集群,需确保与独享集成资源组使用的 VPC 网络能互通。
  2. 填写的用户名密码信息,需确保有数据库的相应权限。

各注意点操作详见“2 使用前提”。

参数说明
基本配置
数据源类型StarRocks
接入方式当前支持 EMR 版 StarRocks 作为数据源接入。
数据源名称数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。
描述对当前新建数据源的注释说明。
参数配置
StarRocks 实例 IDEMR 中创建的 StarRocks 集群实例 ID**。**
数据库名EMR 集群中的 StarRocks 库名称。
用户名数据库的账号
密码数据库的密码

4.2 新建任务

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

4.3 可视化配置说明

任务创建成功后,您可根据实际场景,配置 StarRocks 批式写、StarRocks 流式写等通道任务相关参数:

说明

StarRocks 批式、流式读暂不支持。

4.3.1 StarRocks 批式写

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

参数
说明
*目标类型数据去向目标类型选择 StarRocks。

*数据源名称

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

*数据表数据源下所属需数据写入的表名,下拉可选。

写入前准备语句

在执行该数据集成任务前,需要率先执行的 SQL 语句,通常是为了使任务重跑时支持幂等。
例如您可以通过填写语句,清空表中的某些旧数据,清空完成后,再执行集成任务写入新的数据。如清空表中 p1,p2 分区:TRUNCATE TABLE table_name PARTITION(p1, p2);
语句填写完成后,您可单击右侧的校验按钮,进行语句校验是否符合逻辑。

说明

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

写入后准备语句

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

说明

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

*数据写入方式下拉选择数据写入 StarRocks 的方式,目前仅支持 Stream Load 的方式写入。

4.3.2 StarRocks 流式写

流式数据写入 StarRocks 集成任务,数据目标端选择 StarRocks,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

参数说明
*目标类型数据去向目标类型选择 StarRocks。

*数据源名称

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

*数据表数据源下所属需数据写入的表名,下拉可选。

4.3.3 字段映射

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

  • 自动添加:单击自动添加按钮,根据两端数据表信息,可以自动填充来源和目标的字段信息。

  • 手动添加:单击手动添加按钮,可以手动编辑来源和目标的字段信息,可以逐个添加。

    说明

    来源端字段信息支持输入数据库函数和常量配置,单击手动添加按钮,在源表字段中输入需添加的值,并选择函数或常量类型,例如:

    • 函数:支持您输入 now()、current_timestamp() 等 StarRocks 数据库支持的函数。

    • 常量:您可自定义输入常量值,'123'、'${DATE}'、'${hour}' 等,输入值两侧需要加上英文单引号,支持结合时间变量参数使用。

  • 移动\删除字段:您也可以根据需要移动字段映射顺序或删除字段。

4.4 DSL 配置说明

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

4.4.1 进入 DSL 模式

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

4.4.2 StarRocks Writer

进入 DSL 模式编辑界面后,您可根据实际情况替换相应参数,StarRocks Writer 脚本示例如下:

  • 未创建 StarRocks 数据源示例:

    // writer config
        "writer": {
             // [required] datasource type
            "type": "starrocks" ,
            // [optional] datasource id, set it if you have registered datasource
            "datasource_id": null,
            // [required] user parameter
            "parameter": {
                 "password":"****************",
                 "db_name":"sr_sink_test",
                 "columns":[
                    {
                        "upperCaseName":"ID",
                        "name":"id",
                        "type":"BIGINT"
                    },
                    {
                        "upperCaseName":"NAME",
                        "name":"name",
                        "type":"STRING"
                    }
                ],
                 "sink_write_mode":"STREAMING_UPSERT",
                 "mysql_hosts":"172.16.1.2:9030",
                 "fe_hosts":"172.16.1.2:8030",
                 "user":"**********",
                 "class":"com.bytedance.bitsail.connector.starrocks.sink.StarRocksSink",
                 "table_name":"starrocks_sink_table_partation_dy_new",
                 "pre_sql_list": ["delete from all_field_small_sink_1 where Id >= 0"],
                 "post_sql_list": ["delete from all_field_small_sink_1 where Id >= 0"]
            }
        }
    
  • 已创建 StarRocks 数据源示例:

    // writer config
        "writer": {
             // [required] datasource type
            "type": "starrocks" ,
            // [optional] datasource id, set it if you have registered datasource
            "datasource_id": 100,
            // [required] user parameter
            "parameter": {
                 "columns":[
                    {
                        "upperCaseName":"ID",
                        "name":"id",
                        "type":"BIGINT"
                    },
                    {
                        "upperCaseName":"NAME",
                        "name":"name",
                        "type":"STRING"
                    }
                ],
                 "sink_write_mode":"STREAMING_UPSERT",
                 "class":"com.bytedance.bitsail.connector.starrocks.sink.StarRocksSink",
                 "table_name":"starrocks_sink_table_partation_dy_new",
                 "pre_sql_list": ["delete from all_field_small_sink_1 where Id >= 0"],
                 "post_sql_list": ["delete from all_field_small_sink_1 where Id >= 0"]
            }
        }
    
  • Writer 参数说明,其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数:

    参数名
    参数说明
    *type数据源类型,对于 StarRocks 类型,填写:starrocks

    *datasource_id

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

    • 目前 DSL 模式默认推荐不填写数据源 ID,这里可填写 null。

    • 若通过数据源 ID 方式配置,下方的 user、password、db_name、mysql_hosts、fe_hosts 参数可不输入。

    *user输入登录 StarRocks 集群数据库的用户名信息。
    *password登录 StarRocks 数据库用户名对应的密码。
    *db_name输入需要数据写入的 StarRocks 数据库名称。
    *table_name填写数据源下所需数据写入的表名。
    *classstarrocks writer connector type,默认固定值: com.bytedance.bitsail.connector.starrocks.sink.StarRocksSink

    *columns

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

    • 支持列裁剪:列可以挑选部分列进行导出。

    • 支持列换序:列可以不按照表 Schema 信息顺序进行导出。

    • 支持函数、常量形式添加列:

      • 函数:StarRocks Reader 支持您输入 now()、current_timestamp() 等 StarRocks 数据库支持的函数。

      • 常量:StarRocks Reader 支持您自定义输入常量值,如 '123'、'${DATE}'、'${hour}' 等,输入值两侧需要加上英文单引号,支持结合时间变量参数使用。

    *sink_write_mode输入数据写入 StarRocks 的方式, 当前仅支持 streaming_upsert 方式写入,参数值:STREAMING_UPSERT。
    *mysql_hostsStarRocks 集群支持的 jdbc 节点信息,您可进入 EMR 控制台 > StarRocks 集群详情 > StarRocks 服务部署拓扑 > Fe 组件界面,获取 Fe ip 信息,端口号通常默认为 9030。
    *fe_hostsStarRocks 集群 Fe 节点信息,您可进入 EMR 控制台 > StarRocks 集群详情 > StarRocks 服务部署拓扑 > Fe 组件界面,获取 Fe ip 信息,端口号通常默认为 8030。

    pre_sql_list

    写入前准备语句:在执行数据集成任务前,率先执行的 SQL 语句。此语句通常是为了使任务重跑时支持幂等。
    例如您可以通过填写写入前准备语句,清空表中的某些旧数据,清空完成后,再执行集成任务写入新的数据。如清空表中 p1,p2 分区:TRUNCATE TABLE table_name PARTITION(p1, p2);

    说明

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

    post_sql_list

    写入后准备语句:执行数据同步任务后执行的 SQL 语句。例如数据写入完成后,插入某条特殊的数据,标志导入任务执行结束。

    说明

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