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

配置 StarRocks 数据源

最近更新时间2024.04.11 10:47:40

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

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

1 支持的版本

支持采集 EMR-3.1.1 及以上 StarRocks 集群和 OLAP 服务中 1.1.0 及以上版本全托管 StarRocks 引擎中的数据。

2 使用前提

  1. 子账号新建数据源时,需要有项目的管理员角色,方可以进行新建数据源操作。各角色对应权限说明,详见:管理成员
  2. 访问 EMR-StarRocks 数据源,需先在项目控制台 > 服务绑定 > 引擎绑定中,绑定相应 EMR-StarRocks 集群。详见创建项目
  3. StarRocks 数据源配置时,EMR 集群对应的集群信息、数据库用户名密码需填写正确:

    注意

    填写的数据库用户名信息,必须拥有相应数据库表的读写权限,来保障任务数据能够被正常读取或写入 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]

支持

SMALLINT

2 字节有符号整数,范围 [-32768, 32767]

支持

INT

4 字节有符号整数,范围 [-2147483648, 2147483647]。

支持

BIGINT

8 字节有符号整数,范围 [-9223372036854775808, 9223372036854775807]

支持

LARGEINT

16 字节有符号整数,范围 [-2^127 + 1 ~ 2^127 - 1]

不支持

DECIMAL

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

支持

DOUBLE

8 字节浮点数。

支持

FLOAT

4 字节浮点数。

支持

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'

支持

其他类型

Binary

StarRocks 3.X 版本支持 Binary 数据类型,用于存储二进制数据,单位为字节。
支持的最大长度与 VARCHAR 类型相同,M 的取值范围为 [1,1048576]。如果未指定 M,默认为最大值 1048576。

支持

ARRAY

数组(Array) 是数据库中的一种扩展数据类型,其相关特性在众多数据库系统中均有支持,可以广泛的应用于 A/B Test 对比、用户标签分析、人群画像等场景。StarRocks 当前支持多维数组嵌套、数组切片、比较、过滤等特性。

不支持

BITMAP

BITMAP 与 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、EMR 全托管 StarRocks 两种作为数据源接入。

数据源名称

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

描述

对当前新建数据源的注释说明。

参数配置

StarRocks 实例 ID

EMR 中创建的 StarRocks 集群或 OLAP 服务中全托管 StarRocks 集群实例 ID。

数据库名

输入集群中的 StarRocks 库名称。

用户名

数据库的账号。

密码

数据库的密码。

4.2 新建任务

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

4.3 可视化配置说明

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

说明

StarRocks 流式读暂不支持。

4.3.1 StarRocks 批式读

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

参数

说明

*数据源类型

下拉选择 StarRocks 数据源类型。

*数据源名称

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

*数据表

选择需要采集的数据表名称信息,目前单个任务只支持将单表的数据采集到一个目标表中。

数据过滤

支持您将需要同步的数据进行筛选条件设置,只同步符合过滤条件的数据,可直接填写关键词 where 后的过滤 SQL 语句,例如:create_time > '${date}',表示只同步 create_time 大于等于 ${date} 的数据,不需要填写 where 关键字。
语句填写完成后,您可单击右侧的校验按钮,进行过滤语句校验。

说明

该过滤语句通常用作增量同步,暂时不支持 limit 关键字过滤,其 SQL 语法需要和选择的数据源类型对应。
如果不配置,默认会同步全量数据。

切分建

根据配置的字段进行数据分片,建议使用主键或有索引的列作为切分键:

  • 如果表没有主键或者索引列,可以不配置该字段,同步任务不会进行分片,并以单并发的方式同步所有的数据;
  • 建议使用主键或有索引的列作为切分键,切分键配置没有索引的列同步任务会比较慢;

说明

目前仅支持类型为整型或字符串的字段作为切分建。

4.3.2 StarRocks 批式写

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

参数

说明

*目标类型

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

*数据源名称

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

*数据表

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

写入前准备语句

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

说明

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

写入后准备语句

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

说明

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

*数据写入方式

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

4.3.3 StarRocks 流式写

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

参数

说明

*目标类型

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

*数据源名称

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

*数据表

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

4.3.4 字段映射

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

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

    说明

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

    • 函数:支持您输入 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

    填写数据源下所需数据写入的表名。

    *class

    starrocks 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_hosts

    StarRocks 集群支持的 jdbc 节点信息,您可进入 EMR 控制台 > StarRocks 集群详情 > StarRocks 服务部署拓扑 > Fe 组件界面,获取 Fe ip 信息,端口号通常默认为 9030。

    *fe_hosts

    StarRocks 集群 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 模式支持配置多条写入后准备语句,多条语句之间用英文逗号分隔。