You need to enable JavaScript to run this app.
大数据研发治理套件

大数据研发治理套件

复制全文
ByteHouse 云数仓版
配置 ByteHouse 云数仓版任务
复制全文
配置 ByteHouse 云数仓版任务

ByteHouse 是一款火山引擎云原生数据仓库,为您提供极速分析体验,能够支撑实时数据分析和海量数据离线分析等场景。
DataSail 中的 ByteHouse 云数仓版数据源配置,为您提供读取和写入 ByteHouse 的双向通道数据集成能力,实现不同数据源与 ByteHouse 之间进行数据传输。
本文为您介绍 DataSail 的 ByteHouse 云数仓版的任务配置操作。

1 使用前提

配置 ByteHouse 云数仓版任务前,您需先进行以下操作:

2 支持的字段类型

  • ByteHouse CDW Reader:

    数据类型

    是否支持

    • Int8
    • Int16
    • Int32
    • Int64
    • UInt8
    • UInt16
    • UInt32
    • UInt64

    支持

    Float64

    支持

    Decimal

    支持

    Date

    支持

    datetime

    支持

    String

    支持

    Enum8

    支持

    Array

    支持单层 Array 类型,不支持 Array 的嵌套类型

  • ByteHouse CDW Writer:

    数据字段类型

    支持情况

    Int

    支持

    Uint

    支持

    Float

    支持

    String

    支持

    Time

    支持

    Array

    支持单层 Array 类型,不支持 Array 的嵌套类型

    Map

    支持

    BitMap64

    支持

    JSONB

    支持

3 新建离线任务

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

4 可视化配置说明

任务创建成功后,您可根据实际场景,配置 ByteHouse_CDW 批式读ByteHouse_CDW 批式写等通道任务。

4.1 ByteHouse_CDW 批式读

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

参数

说明

*数据源类型

下拉选择 ByteHouse_CDW 数据源类型。

*数据源名称

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

*数据表

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

数据过滤

支持您将需要同步的数据进行筛选条件设置,只同步符合过滤条件的数据,可直接填写关键词 where 后的过滤 SQL 语句且无需填写结束符号(;),例如:create_time > '${date}',表示只同步 create_time 大于等于 ${date} 的数据,不需要填写 where 关键字。

说明

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

*切分建

根据源数据表中的某一列作为切分键,建议使用主键或有索引的列作为切分键。

说明

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

4.2 ByteHouse_CDW 批式写

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

参数

说明

*目标类型

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

*数据源名称

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

*数据表

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

  • 一键建表:若目标表还未创建,您可单击一键建表按钮,在弹窗中进行可视化建表操作。建表逻辑详见数据库表及视图
  • 修改数据表:若源端采集的字段存在更新情况时,您可单击修改数据表按钮,及时对目标表字段进行修改。

注意

  • 子用户操作 ByteHouse CDW 库表时,需保障子用户拥有相应的 ByteHouse CDW 库表权限。权限说明详见 ByteHouse CDW 用户管理
  • 若 ByteHouse CDW 数据源接入方式为连接串模式接入时,暂不支持一键建表功能,您需手动在目标库表中创建相应的数据表。
  • 目标 ByteHouse CDW 数据表后续若用于解决方案中,则一键建表创建时必须要设置唯一键字段。
    Image
  • 当写入 ByteHouse CDW 表的数据量较大时,建议根据 ByteHouse 建表配置最佳实践 操作进行手动建表。
  • 当分区键选择的分区字段类型为 DateTime、DateTime64、Date、Time 类型时,您可单击右侧编辑按钮,进一步选择时间粒度,如 MONTH、DAY、HOUR 粒度。其中
    • Date 类型的支持选择 MONTH、DAY 粒度;
    • DateTime、DateTime64 类型的支持选择 MONTH、DAY、HOUR 粒度,默认选取首个选项,即 DAY;
    • Time 类型较特殊,只支持选择 HOUR 分区粒度。

*生命周期

展示所选目标数据表的生命周期。

*写入方式

支持选择 CFS、JDBC 方式写入:

  • CFS 方式:数据先写入 CFS 上,然后通过导入服务统一 Load 到 ByteHouse 表中; 此写入方式事务性较好,但实时性较差,非主键表推荐此方式;
  • JDBC 方式: 数据通过 JDBC 方式以微批方式(默认 8192 条)写入 ByteHouse 表中;此方式实时性较好,但事务性略逊一筹;主键表推荐此方式;

注意

  • JDBC 写入方式,必须在数据源配置时,填写 ByteHouse CDW 中正常状态的 API Token 信息。详见4.1 数据源注册
  • 数据源配置使用密码鉴权方式时,仅支持选择 JDBC 方式写入。

*分区设置

根据所选数据表,自动获取表分区字段信息。 分区内容可设置具体时间分区粒度,可以用表达式:${date}、${hour}等参数变量表示;也支持写入动态分区类型,即根据源端字段值内容,进行动态写入,动态分区值必须存在于源端 Columns 中。

说明

  • 一级分区仅支持天级分区;
  • 小时级分区,若日期格式为:hh 如:02,则填写:${hour};
  • 小时级分区,若日期格式为:H,如:2,则填写:${HOUR};
  • 天级分区,若日期格式为:yyyyMMdd 如:20181017,则填写:${date};
  • 天级分区,若日期格式为:yyyy-MM-dd 如:2018-11-17,则填写:${DATE};
  • 月级分区,若日期格式为:MM,如:09,则填写:${month};
  • 静态分区如 App,只能输入一个分区内容的值;
  • 动态分区,分区内容不需要填写实际值,置空即可;
  • 数据写入时,分区字段暂不支持写入 datetime 数据类型。

写入前准备语句

当写入方式为 JDBC 时:
可输入在执行该数据集成任务前,需要率先执行的 SQL 语句,通常是为了使任务重跑时支持幂等。
例如您可以通过填写语句,清空表中的某些旧数据,清空完成后,再执行集成任务写入新的数据。如删除 date='${date}' 的数据:delete from table_name where date='${date}'
支持配置多条写入前准备语句,用英文分号 “;” 分隔即可。语句填写完成后,您可单击右侧的校验按钮,进行语句校验是否符合逻辑。

写入后准备语句

当写入方式为 JDBC 时:
可输入执行数据同步任务之后执行的 SQL 语句。例如写入完成后插入某条特殊的数据,标志导入任务执行结束。
支持配置多条写入后准备语句,用英文分号 “;” 分隔即可。语句填写完成后,您可单击右侧的校验按钮,进行语句校验是否符合逻辑。

4.3 ByteHouse_CDW 流式写

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

参数

说明

*目标类型

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

*数据源名称

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

*数据表

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

  • 一键建表:若目标表还未创建,您可单击一键建表按钮,在当前窗口中进行可视化建表操作。建表逻辑详见数据库表及视图
  • 修改数据表:若源端采集的字段存在更新情况时,您可单击修改数据表按钮,及时对目标表字段进行修改。

*生命周期

展示所选目标数据表的生命周期。

*写入方式

支持选择 CFS、JDBC 方式写入,

注意

JDBC 写入方式,必须在数据源配置时,填写 ByteHouse CDW 中正常状态的 API Token 信息。详见4.1 数据源注册

*分区设置

根据所选数据表,自动获取表分区字段信息。 分区内容可设置具体时间分区粒度,可以用表达式:${date}、${hour}等参数变量表示;也支持写入动态分区类型,即根据源端字段值内容,进行动态写入,动态分区值必须存在于源端 Columns 中。

说明

  • 一级分区仅支持天级分区;
  • 小时级分区,若日期格式为:hh 如:02,则填写:${hour};
  • 小时级分区,若日期格式为:H,如:2,则填写:${HOUR};
  • 天级分区,若日期格式为:yyyyMMdd 如:20181017,则填写:${date};
  • 天级分区,若日期格式为:yyyy-MM-dd 如:2018-11-17,则填写:${DATE};
  • 月级分区,若日期格式为:MM,如:09,则填写:${month};
  • 静态分区如 App,只能输入一个分区内容的值;
  • 动态分区,分区内容不需要填写实际值,置空即可。
  • 流式集成写入 ByteHouse CDW 选择 JDBC 写入方式时,分区类型默认为动态分区类型,且不可更改;
  • 数据写入时,分区字段暂不支持写入 datetime 数据类型。

4.4 字段映射

数据来源和目标端配置完成后,需要指定来源和目标端的字段映射关系,根据字段映射关系,数据集成任务将源端字段中的数据,写入到目标端对应字段中。
字段映射支持选择基础模式转换模式配置映射:

注意

基础模式和转换模式不支持互相切换,模式切换后,将清空现有字段映射中所有配置信息,一旦切换无法撤销,需谨慎操作。

  • 转换模式:
    字段映射支持数据转换,您可根据实际业务需求进行配置,将源端采集的数据,事先通过数据转换后,以指定格式输入到目标端数据库中。
    转换模式详细操作说明详见4.1 转换模式
    在转换模式中,你可依次配置:来源节点、数据转换、目标节点信息:

    配置节点

    说明

    来源节点

    配置数据来源 Source 节点信息:

    • 节点名称:自定义输入来源节点名称信息,只允许由数字、字母、下划线、-和.组成;且长度不能超过10。
    • 数据字段:通过自动添加、手动添加等方式添加数据来源字段信息。

    配置完成后,单击确认按钮,完成来源节点配置。

    数据转换

    单击数据转换右侧添加按钮,选择 SQL 转换方式,配置转换信息和规则:

    • 节点名称:自定义输入来源节点名称信息,只允许由数字、字母、下划线、-和.组成;且长度不能超过10。
    • SQL 脚本:输入 SQL 脚本转换规则,目前仅支持添加一个转换的 SQL 语句,且不能包括 “;”。

    配置完成后,单击确认按钮,完成数据转换节点配置。SQL 脚本示例详见4.1.2 添加转换节点

    目标节点

    配置目标节点 Sink 信息:

    • 节点名称:自定义输入来源节点名称信息,只允许由数字、字母、下划线、-和.组成;且长度不能超过10。
    • 数据字段:通过自动添加、手动添加等方式添加数据目标字段信息。

    配置完成后,单击确认按钮,完成目标节点配置。

  • 基础模式:

    您可通过以下三种方式操作字段映射关系:

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

      说明

      自动添加字段映射时,默认不会映射来源表中的分区键字段。若有需要,您可通过手动添加的方式,将分区键字段的映射配置上。

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

      说明

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

      • 函数:支持您输入 now()、timestamp()等 ByteHouse CDW 数据库支持的函数。
      • 常量:您可自定义输入常量值,'123'、'${DATE}'、'${hour}' 等,输入值两侧需要加上英文单引号,支持结合平台时间变量与常量说明使用。
    • 移动\删除字段:您也可以根据需要移动字段映射顺序或删除字段。

5 DSL 配置说明

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

5.1 进入 DSL 模式

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

5.2 ByteHouse_CDW 批式读

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

// 变量使用规则如下:
// 1.自定义参数变量: {{}}, 比如{{number}}
// 2.系统时间变量${}, 比如 ${date}、${hour}
// **************************************
{
    "version": "0.2",
    "type": "batch",
    // reader config
    "reader": {
        // [required] datasource type
        "type": "clickhouse" ,
        // [optional] datasource id, set it if you have registered datasource
        "datasource_id": null,
        // [required] user parameter
        "parameter": {
            "clickhouse_type":"bytehouse_cdw",
            "sql_filter":"date = '20230921' ",
            "split_field":"id",
            "password":"*******",
            "db_name":"db_test",
            "vw_name":"dts_test",
            //"user_name":"default",
            "class":"com.bytedance.bitsail.connector.clickhouse.source.ClickhouseSource",
            "jdbc_url":"bytehouse-cn-beijing.volces.com:19000",
            "table_name":"table_name_test",
            "columns": [
                {
                    "upperCaseName":"ID",
                    "name":"id",
                    "type":"Int64"
                },
                {
                    "upperCaseName":"NAME",
                    "name":"name",
                    "type":"String"
                }
            ]
        }
    },
    // writer config
    "writer": {
        ...
    },
    // common config
    "common": {
        ...
    }
}

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

参数名

参数说明

示例

*type

数据源类型,对于 ByteHouse 类型,填写:clickhouse

clickhouse

*datasource_id

目前 DSL 模式暂不支持以数据源 ID 的方式填写,此处默认为 null。

*clickhouse_type

clickhouse数据源类型下,读取 ByteHouse 云数仓版数据源需设置为:bytehouse_cdw

bytehouse_cdw

sql_filter

同步数据的过滤条件,同步数据时只会同步符合过滤条件的数据,可选。

*jdbc_url

ByteHouse_CDW 数据源连接的 jdbc 地址。
默认公网地址,独享数据集成资源组需要打开公网访问,详见“资源组 VPC 开通公网”。
公网地址:bytehouse-cn-beijing.volces.com:19000

说明

因为 ByteHouse_CDW 侧网络限制,若实际场景中需要通过私网域名访问时,您可通过提工单的方式,联系 ByteHouse_CDW 支持同学操作,并将独享集成资源组中 VPC 中的 IPv4 CIDR 地址添加到 ByteHouse_CDW 数据库的白名单中。
私网地址:bytehouse-cn-beijing.ivolces.com:19000

*vw_name

ByteHouse_CDW 中查询使用的计算组。如果在 ByteHouse 中设置了默认计算组就可以不明确指定。

*password

填写 Bytehouse CDW 账号下的 Access Key 信息:

  1. 登录 Bytehouse CDW 控制台
  2. 右上角单击齿轮按钮,进入我的账号界面;
  3. 在账号详细信息界面中,获取 Access Key。

Image

user_name

ByteHouse_CDW 中默认用户名default,可以不设置。

*split_field

根据源数据表中的某一列作为切分键,建议使用主键或有索引的列作为切分键:

说明

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

*class

bytehouse_cdw reader connector type,默认填写固定值:com.bytedance.bitsail.connector.clickhouse.source.ClickhouseSource

com.bytedance.bitsail.connector.clickhouse.source.ClickhouseSource

*db_name

填写需读取的数据库名称。

*table_name

输入需读取的数据表名字信息。

*columns

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

5.3 ByteHouse_CDW 批式写

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

// **************************************
// 变量使用规则如下:
// 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": {
        ...
    },
    // writer config
    "writer": {
        // [required] datasource type
        "type": "bytehouse_cdw",
        // [optional] datasource id, set it if you have registered datasource
        "datasource_id": {datasource_id},
        // [required] user parameter
        "parameter": {
            "columns": [
                {
                    "name": "id",
                    "type": "String"
                }
            ],
            "ch_partition_type":"String",   
            "shard_num":2,    
            "shard_column":"id",     
            "partition":"date=20240101", 
            "ch_table":"table_test1"
        }
    },
    // common config
    "common": {
        ...
    }
}

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

参数名

参数说明

*type

数据源类型,对于 ByteHouse 类型,填写 bytehouse_cdw

*datasource_id

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

*ch_table

填写需要数据写入的 ByteHouse_CDW 表名称信息。

*columns

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

ch_partition_type

ByteHouse_CDW 表分区字段类型,多级分区需要英文逗号按顺序分割,非分区表可不填写。

partition

ByteHouse_CDW 分区,key=value 格式,多级分区需要英文逗号按顺序分割,非分区表可不填写。

*shard_num

分片数量,用于任务分片处理,建议和任务并发设置一致。

*shard_column

分片字段,建议使用 ByteHouse_CDW 表主键字段信息。

6 高级参数说明

  • 对于通道任务,读参数需要加上 job.reader. 前缀,写参数需要加上 job.writer. 前缀,如下图所示:

  • 对于 DSL 任务,读参数请配置到 reader.parameter 下,写参数请配置到 writer.parameter 下,直接输入参数名称和参数值,如:"job.writer.loading_mode":"FULL_REFRESH"

6.1 ByteHouse_CDW 批式读

读取 ByteHouse_CDW 时,支持以下高级参数,您可根据实际情况进行配置:

参数名

描述

默认值

job.reader.split_config

设置任务分片数量配置参数。
配置示例: job.reader.split_config = {"split_num": 10}
适用范围: 整数类型切分键,如切分键是 int 类型,默认分片数是和并发数相同 ,可以通过此参数修改分片数量:job.reader.split_config = {"split_num": 100}

分片数是和并发数相同

job.reader.string_split_size

设置分片大小。
适用范围:字符串类型切分键,您可根据该值计算分片数量。
该值不宜过大或过小:

  • 过小,分片数量较多,计算分片耗时较长
  • 过大,单分片数量过大,触发读数据超时

1000000

job.reader.customized_connection_properties

读取 ByteHouse 超时设置参数。
配置示例: 超时设置 : job.reader.customized_connection_properties = {"max_execution_time":3000}

job.reader.output_null_value

ByteHouse CDW 中读取 Nullable(T) 类型的数据时,没有具体值的行将默认读取返回为 null;如果需要返回 0,则您可配置 job.reader.output_null_value=false 参数,此时 null 值将返回 0。

true

job.reader.use_local_split

读取 ByteHouse CDW/CE 数据时,若配置的切分键中包含空值时,可以使用该高级参数 job.reader.use_local_split=true,避免数据丢失或数据重复情况。

6.2 ByteHouse_CDW 批式写

批式写入 ByteHouse_CDW 时,支持以下高级参数,您可根据实际情况进行配置:

参数名

描述

默认值

job.writer.flush_interval

写入 buffer 的刷新时间,默认 60000 毫秒

60000

job.writer.buffer_count

写入 buffer 记录条数,默认 8192

8192

job.writer.query_timeout

设定查询超时退出时间,默认 30000 毫秒

30000

job.writer.skip_delete_task

写入 ByteHouse CDW 是通过导入任务方式,默认任务执行完,再删除导入任务,通过此参数,您可设置是否跳过删除导入任务 ;
适用场景:需要在 ByteHouse CDW 查看导入服务日志时,参数设置为 true,则跳过删除导入任务。

false

job.writer.cfs_write_batch_size

  • 动态分区默认 4096;
  • 非动态分区默认 8192。

说明

该高级参数,需配合 CFS 写入方式进行使用。

4096/8192

job.writer.cfs_vw_id

当选择 CFS 方式写入 ByteHouse 云数仓版数据,且当默认计算组可用资源较少时,可通过在自定义参数设置中添加该高级参数,指定数据导入服务使用其他的计算组信息。格式如下:
job.writer.cfs_vw_id = vw-21xxxxx57-dts-test,需替换为具体的计算组信息,可前往 ByteHouse 控制台获取对应的计算组。详见 ByteHouse CDW 计算组

job.writer.bh_ce_partition_type

显示的指定 ByteHouse 的分区字段为 string 类型,当分区字段使用函数时,需要使用此高级参数函数。

string

job.writer.loading_mode

高级参数 job.writer.loading_mode 可设置为 FULL_REFRESH 或 INCREMENTAL,默认为 INCREMENTAL:

  • FULL_REFRESH:可支持非分区表清除原先表中数据后再导入新数据,避免数据重复。
  • INCREMENTAL:支持分区表导入数据时,事先清除对应分区中的数据后再导入新数据,对非分区表无效。

说明

该高级参数,需配合 CFS 写入方式进行使用。

INCREMENTAL

job.writer.extraProperties

添加此参数,数据导入 ByteHouse CDW 时,支持原子性导入数据。
配置示例如下:
job.writer.extraProperties = {"job_time":"${date}"}

job.writer.bh_connection_properties

Map<String,String> 类型。
自定义设置 ByteHouse query 参数,设置到 jdbc 连接的 properties 中。
配置示例如下:
job.writer.bh_connection_properties={"query_timeout":63}

说明

该高级参数,需配合 JDBC 写入方式进行使用。

job.writer.session_properties

Map<String,String> 类型。
自定义设置 ByteHouse session 参数,通过在当前 session 中执行 set key=value 的语句来实现。
配置示例如下:
job.writer.session_properties={"max_threads":8}

job.writer.pre_sql_list

写入 ByteHouse CDW 数据源前置处理 SQL List ,格式是 json 数组,多条执行语句可用逗号分隔。如:
job.writer.pre_sql_list=["delete from table_name1 where id=xxx","delete from table_name2 where id=xxx"]

说明

该高级参数,需配合 JDBC 写入方式进行使用。

最近更新时间:2026.01.16 11:57:20
这个页面对您有帮助吗?
有用
有用
无用
无用