You need to enable JavaScript to run this app.
文档中心
文档控制台
注册
大数据研发治理套件

大数据研发治理套件

复制全文
下载 pdf
TOS
配置 TOS 任务
复制全文
下载 pdf
配置 TOS 任务

对象存储 TOS(Tinder Object Storage)是火山引擎提供的海量、安全、低成本、易用、高可靠、高可用的分布式云存储服务。DataSail 中 TOS 数据源为您提供读取和写入 TOS 数据的双向通道能力,实现不同数据源与 TOS 进行数据传输。本文将为您介绍 DataSail 的 TOS 数据同步的能力支持情况。

1 使用前提

已完成 TOS 数据源配置操作,详见配置 TOS 数据源

2 离线同步任务配置

2.1 新建离线任务

TOS 数据源测试连通性成功后,进入数据开发界面,开始新建 TOS 相关通道任务。新建任务方式详见离线数据同步
任务创建成功后,即可根据实际场景,配置 TOS 离线读、TOS 离线写或 TOS 流式写等通道任务。

2.2 可视化配置 TOS 离线读

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

| | | \

参数 说明
*数据源类型 下拉选择 TOS 数据源类型。
*数据源名称 已在数据源管理中注册成功的 TOS 数据源,下拉可选。
若还未建立相应数据源,可单击数据源管理按钮,前往创建 TOS 数据源。
*文件路径 填写需要采集的 TOS 数据文件所在路径,可在 TOS 中查看。
:::tip
* 路径中包括 ^ , * , ? , [ , ] , { , } , ( , ) , \ 等符号,则会被判定为正则形式的路径。
* 文件路径填写说明:
* 不需要包含 Bucket 名称,且不用 / 开头,直接填写 Bucket 名称后的文件路径。如文件所在的完整路径为:tos://bucket-test/data/csv/zip/data1.zip,则您在 TOS 集成任务配置时,文件路径只需要填写 data/csv/zip/data1.zip 即可。
* 可配置目录,可配置具体的文件名称。
* 若配置目录,仅读取当前目录下的子文件,但不递归子目录。例如 data/csv/,若该目录下有子目录 data1、data2、data3,则只读取 data/csv/ 目录下的子文件,不递归子目录。
* 若配置具体的文件,不支持 “.” 或 “_” 开头的文件名。
* 支持 “*” 通配符形式配置文件路径信息,如data/csv/*.csv
* 支持配置日期正则参数形式,如 bigdata/t_user/${date}
* TOS 读取 Proton 桶类型,目前以白名单形式进行控制,您可通过提工单方式,联系我们进行开通。
:::
*数据类型 支持选择 json、pb、parquet、csv、txt 等几种数据类型:
* Parquet 类型:字段 Schema,可通过同名映射的方式配置。
* Json 类型:
数据类型为 json 时,需添加示例数据,以 json 字符串形式描述 schema,需填写完整的数据。例如:{"uid":123, "ut":12, "user_name": "xxx"}。 若没有示例数据,则 Schema 信息不准确,您需手动添加 Schema 字段映射配置。
* csv、txt 类型:需添加分隔符、原始字符集、导入起始行参数:
* 分隔符:选择原始文件的分隔符,如“,”、“Tab”、“;”等,下拉可选,同时也支持自定义分隔符的方式指定。
* 原始字符集:需选择原始文件的字符集,支持选择 GBK、UTF-8 格式。
* 导入起始行:无表头请填0,有表头请填1。
* PB 类型:需填写 Pb 类定义和 Pb 类名信息
* Pb 类定义:
输入 Pb 类定义文件信息,只支持一个 Pb 类定义,填写示例如下:
```powershell
syntax = "proto2";
package abase_test;
message AbaseTest {
required int64 first_id = 1;
required int64 latest_id = 2;
}
```
* Pb 类名:Pb 类名需填写为 message 名称,例如上方定义的 Pb 类,对应 PB Class 为 AbaseTest。

2.3 可视化配置 TOS 离线写

![Image](https://portal.volccdn.com/obj/volcfe/cloud-universal-doc/upload_84412779c3f48a17158e8fbc6dd39cee.png =100%x)
数据目标端选择 TOS,并完成以下相关参数配置。其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

| | | \

参数 说明
*目标类型 下拉选择 TOS 数据源类型。
*数据源名称 已在数据源管理中注册成功的 TOS 数据源,下拉可选。
若还未建立相应数据源,可单击数据源管理按钮,前往创建 TOS 数据源。
*文件路径 填写需要写入的 TOS 数据文件所在路径,支持填写日期变量形式,如 ${date},具体路径可在 TOS 中查看。
:::tip
文件路径填写说明:
* 不需要包含 Bucket 名称,且不用 / 开头;
* 支持配置日期正则参数形式,如 bigdata/t_user/${date}
* TOS 写入 Proton 桶类型,目前以白名单形式进行控制,您可通过提工单方式,联系我们进行开通。
:::
*文件名前缀 输入 TOS 目标文件名的前缀信息,如填写 tos_writer,则生成的文件名会以 tos_writer 开头。
文件名自动生成规则如下:
filePrefix_{jobId}{subTaskId}{file_count}_{generate_timestamp}.{fileFormat}.{compression_suffix}
* filePrefix:即您在输入框中输入的前缀信息;
* jobId:当前任务 ID,可在调度设置 > 基本信息中查看;
* subTaskId:并发 Task 的序号;
* file_count:当前该 Task 写的第几个文件;
* generate_timestamp:文件创建时间;
* fileFormat:文件格式,即文本类型中选择的 csv、json、parquet、orc 等类型;
* compresion_suffix:文件压缩格式,如 .gz、.snappy 等格式,其中压缩格式为 None 时,文件名中显示为空
*文件名称冲突 依据实际业务场景,下拉选择数据写入时,针对文件名称冲突状况下的任务处理形式,支持以下三种处理方式:
* 覆盖(替换原有文件): 默认为覆盖方式,先删除原有数据再写入新数据;
* 适用场景:每次全量同步,目标路径下只保留最新数据。
* 追加(保留原有文件): 直接写入新数据;
* 适用场景:增量同步场景,历史文件需要保留。
* 冲突报错:文件名称冲突时,任务会提示异常并退出;
* 适用场景:严格模式,防止意外覆盖重要数据。
*文本类型 支持选择 json、parquet、csv、orc 等几种数据类型:
* json、parquet、orc 类型:无需填写其他配置信息。
* csv 类型:需填写是否配置表头、分隔符信息:
* 是否配置表头:根据实际情况,选择产出文件是否需要配置表头,若选择是,则默认将字段映射的所有字段配置为表头。
* 分隔符:选择原始文件的分隔符,如“,”、“Tab”、“;”等,下拉可选,同时也支持自定义分隔符的方式指定。
*压缩格式 选择写入 TOS 中数据文件的压缩格式,支持选择 None、Snappy、Lz4、Gzip、Zstd 等压缩格式。

2.4 可视化配置 TOS 实时写

![Image](https://portal.volccdn.com/obj/volcfe/cloud-universal-doc/upload_38b11d141e54e3f703b11d266d52fa04.png =100%x)
流式集成任务实时写入 TOS 数据源,数据目标类型选择 TOS,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

| | | \

参数 说明
*目标类型 下拉选择 TOS 数据源类型。
*数据源名称 已在数据源管理中注册成功的 TOS 数据源,下拉可选。
若还未建立相应数据源,可单击数据源管理按钮,前往创建 TOS 数据源。
*TOS 保存地址 填写需要写入数据的 TOS 存储路径信息。
:::tip
文件路径填写说明:
* 不需要包含 Bucket 名称,且不用 / 开头;
* 支持配置日期正则参数形式,如 bigdata/t_user/${date}
:::

2.5 字段映射

可视化离线读 TOS,数据来源和目标端配置完成后,需要指定来源和目标端的字段映射关系,根据字段映射关系,数据集成任务将源端字段中的数据,写入到目标端对应字段中。
字段映射支持选择基础模式转换模式配置映射:
:::warning
基础模式和转换模式不支持互相切换,模式切换后,将清空现有字段映射中所有配置信息,一旦切换无法撤销,需谨慎操作。
:::

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

    | | | \

    配置节点 说明
    来源节点 配置数据来源 Source 节点信息:
    * 节点名称:自定义输入来源节点名称信息,只允许由数字、字母、下划线、-和.组成;且长度不能超过10。
    * 数据字段:通过自动添加、手动添加等方式添加数据来源字段信息。
    配置完成后,单击确认按钮,完成来源节点配置。
    数据转换 单击数据转换右侧添加按钮,选择 SQL 转换方式,配置转换信息和规则:
    * 节点名称:自定义输入来源节点名称信息,只允许由数字、字母、下划线、-和.组成;且长度不能超过10。
    * SQL 脚本:输入 SQL 脚本转换规则,目前仅支持添加一个转换的 SQL 语句,且不能包括 “;”。
    配置完成后,单击确认按钮,完成数据转换节点配置。SQL 脚本示例详见4.1.2 添加转换节点
    目标节点 配置目标节点 Sink 信息:
    * 节点名称:自定义输入来源节点名称信息,只允许由数字、字母、下划线、-和.组成;且长度不能超过10。
    * 数据字段:通过自动添加、手动添加等方式添加数据目标字段信息。
    配置完成后,单击确认按钮,完成目标节点配置。
  • 基础模式:

    基础模式您可通过以下四种方式操作字段映射关系:

    • 自动添加:源端 TOS 数据类型为 csv、txt、json、pb 时,单击自动添加按钮,源端字段信息可通过自动添加按钮操作。
    • 同名映射:源端 TOS 数据类型为 Parquet 时,您可在配置完目标端字段信息后,单击源端字段映射中的同名映射按钮,进行同名字段映射配置。
    • 手动添加:单击手动添加按钮,可以手动编辑来源和目标的字段信息,可以逐个添加。
    • 移动\删除字段:您也可以根据需要移动字段映射顺序或删除字段。

:::tip
当上游为 BMQ、RocketMQ、Kafka 和 DataSail 这四种消息队列的数据源时,写入 TOS 不需要配置 column 字段。
:::

3 高级参数说明

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

3.1 TOS 批式读常用参数

TOS 数据源常用的批式读高级参数整理如下:

| | | | \

参数名 描述 默认值
job.reader.enable_success_file_check 若任务中需要检查前置 Success 文件是否就绪,可添加该高级参数。设置为 true 时,表示开启 Success 文件检查,当检查的文件存在时,任务才会执行成功。默认 false,不检查。 false
job.reader.success_file_path 设置检查的 Success 文件全路径信息。
job.reader.success_file_check_interval_ms 设置检查 Success 文件时间间隔,单位毫秒。 60000
job.reader.success_file_check_times 设置 Success 文件检查次数。 60
job.reader.csv_delimiter_ascii 当 TOS 文件中的分隔符是不可见的 ASCII 字符时,可使用该高级参数,并将其设置为对应字符的 ASCII 码,如 job.reader.csv_delimiter_ascii=1,表示文件分隔符为不可见的控制字符 SOH。 \
该参数优先级高于界面设置的分隔符。
job.reader.compress_codec TOS 读取压缩文件时需要配置该参数,可选值为 zip。
job.reader.s3a_endpoint 覆盖默认的 TOS Endpoint,用于连接其他 S3 兼容对象存储。
job.reader.s3a_path_style_access 是否使用 Path-Style 访问模式(适用于部分自建 MinIO)。 false

3.2 TOS 批式写常用参数

TOS 数据源常用的批式写高级参数整理如下:

| | | | \

参数名 描述 默认值
job.writer.s3a_endpoint 覆盖默认的 TOS Endpoint,用于连接其他 S3 兼容对象存储。
job.writer.s3a_path_style_access 是否使用 Path-Style 访问模式。 false

4 最佳实践

4.1 文件格式选择建议

| | | | | \

场景 推荐格式 压缩格式 原因
结构化大数据量(>1GB) Parquet Snappy 列式存储,读取效率高,压缩比好。
数据交换/人可读 CSV Gzip 通用格式,兼容性最好。
嵌套/半结构化数据 JSON Gzip 支持嵌套结构。
日志类数据写入 JSON / CSV Lz4 写入快,Lz4 压缩速度最快。
存档/冷数据 Parquet / ORC Zstd 最高压缩比。

4.2 大文件同步性能优化

| | | \

优化项 建议
文件拆分 单个文件建议不超过 1GB,拆分为多个小文件可提升并发效率。
并发数 文件数量决定最大并发度,单文件不支持多线程,多文件场景可适当提高并发数。
压缩选择 读取时 Snappy/Lz4 解压最快;写入时 Gzip 压缩比最优。
Success 文件 上游 ETL 产出数据后放置 Success 标记文件,DataSail 侧开启 enable_success_file_check,确保数据就绪。

4.3 增量同步方案

TOS 为文件存储系统,不支持行级增量。推荐的增量方案:

  • 方式一:基于日期分区目录

    # 文件路径使用日期变量
    data/orders/${date}/
    
    # 每天只读取当天目录下的新文件
    
  • 方式二:Success 文件检查 + 目录约定

    # 高级参数配置
    job.reader.enable_success_file_check = true
    job.reader.success_file_path = data/orders/${date}/_SUCCESS
    

4.4 生产环境检查清单

  • AK/SK 遵循最小权限原则(只读场景不赋予写权限)。
  • 存储桶配置了合适的生命周期策略(避免历史文件无限增长)。
  • 大文件已拆分为合理大小(单文件 < 1GB)。
  • CSV/TXT 文件的分隔符在数据内容中不会出现。
  • 增量场景已配置日期变量或 Success 文件检查。
  • 跨云场景已验证 Endpoint 连通性和传输费用。
  • 已配置任务失败告警。

附录:常见问题 FAQ

Q1:TOS 读取时报"Access Denied"怎么办?
A:请按以下顺序排查:

  1. 确认 AK/SK 对应的 IAM 用户是否具备目标 Bucket 的 tos:GetObjecttos:ListBucket 权限。
  2. 确认 Bucket 策略(Bucket Policy)是否限制了特定 IP 或 VPC 的访问。
  3. 确认 AK/SK 是否已过期或被禁用。
  4. 如果是子用户,确认主账号是否已正确授权。

Q2:读取 CSV 文件时字段错位(数据串行)怎么办?
A:字段错位的常见原因:

  • 数据内容中包含了分隔符字符 → 修改分隔符为数据中不会出现的字符(如 \001),使用 job.reader.csv_delimiter_ascii=1 配置。
  • 数据内容中包含换行符 → 对源数据做预处理,去除字段内的换行符。
  • 编码格式不匹配 → 确认原始字符集选择正确(UTF-8 或 GBK)。

Q3:连接 S3/OSS/COS 时连通性测试通过但任务运行失败?
A:这是因为连接串方式的连通性测试验证的是火山引擎 TOS 的连通性,不会验证自定义的 s3a_endpoint。解决方案:

  1. 确认高级参数 job.reader.s3a_endpoint(或 job.writer.s3a_endpoint)配置正确。
  2. 确认独享集成资源组已开通公网访问能力。
  3. 确认目标云平台的 AK/SK 有效且权限充足。
  4. 如果是自建 MinIO,检查是否需要配置 s3a_path_style_access=true

Q4:写入 TOS 后文件名很长且包含乱码怎么调整?
A:TOS Writer 的文件名由系统自动生成,格式为 {filePrefix}_{jobId}{subTaskId}{file_count}_{timestamp}.{format}.{compression}。建议:

  • 设置有业务含义的 文件名前缀(如 orders_daily)。
  • 文件名中的 jobId 和 timestamp 用于保证唯一性,无法去除。
  • 如果需要特定文件名,可在下游通过脚本重命名。

Q5:如何从 TOS 读取 ZIP 压缩文件?
A:需要在高级参数中配置 job.reader.compress_codec=zip
:::warning

  • 压缩文件不支持多线程并发读取。

  • ZIP 包内的文件格式需要与配置的数据类型一致。
    :::
    Q6:跨云传输(如 TOS → S3)的数据量很大,如何优化传输效率?
    A:

  • 尽量使用高压缩比格式(Parquet + Snappy / Gzip),减少传输数据量。

  • 将大文件拆分为多个小文件,提高并发度。

  • 考虑在目标云的同 Region 部署中转节点,减少跨区域流量。

  • 评估公网带宽限制,必要时申请带宽扩容。

最近更新时间:2026.07.03 18:29:48
这个页面对您有帮助吗?
有用
有用
无用
无用