DataWorks 又又又升级了,这次我们通过 Arrow 列存格式让数据同步速度提升10倍!

引言

在大数据时代,数据集成作为企业数据流转的核心枢纽,承担着异构数据源之间高效同步的重要职责。随着数据量的爆炸式增长,传统的行存同步方式在面对大规模列存数据处理时,逐渐显露出性能瓶颈。

为解决这一挑战,DataWorks数据集成推出基于Apache Arrow列存格式的高性能同步能力,实现从"行式传输"到"列式直通"的技术跃迁。通过引入零拷贝、列式内存标准Apache Arrow,DataWorks实现了跨数据源的列存到列存高效同步,性能提升最高达10倍以上,助力企业实现数据流转的"高速通道"。

技术创新:基于Arrow的列存同步方案

Apache Arrow:下一代数据处理的"通用语言"

Apache Arrow是一项由Apache基金会主导的跨语言、高性能列式内存数据标准,被广泛应用于大数据生态(如Spark、Flink、Presto等)。核心优势在于:

  • 零序列化/反序列化:数据以内存二进制块直接传输,避免格式转换开销

  • 零拷贝(Zero-Copy):跨进程/跨系统共享内存,极大降低CPU与内存消耗

  • CPU缓存友好:列式存储提升缓存命中率,优化计算效率

  • 统一类型系统:支持复杂嵌套结构,保障跨平台类型兼容性

简单来说:Arrow让数据"原样流动",不再"反复翻译"。

传统架构 vs Arrow架构:从"搬砖"到"高速专列"

当前大多数数据集成工具仍基于"行存驱动"设计:

  • Reader读取列存文件 → 解码成单行Record对象;

  • 框架传递Record → Writer再将其编码回目标列存格式。

这一过程存在严重性能浪费:

  • 多次类型转换与对象创建(如String → BigDecimal)

  • 高频GC压力导致频繁Stop-The-World

  • 内存带宽利用率低下

而Arrow则彻底改变了这一流程:Reader直接输出列式Batch → Writer直接消费列式Batch,中间无需任何转换,真正实现"端到端列式流水线"。

传统行存同步架构:

面向单行行存的格式设计,每一个Record对象定义了若干个Column,每个Column包含当前行对应该列的列值Value。以MaxCompute(ODPS)列存数据同步到MaxCompute(ODPS)列存为例:

MaxCompute表数据可能以ORC、Parquet等列存格式存储的数据,同步核心流程分为:

  1. 通过MaxCompute Tunnel将数据按行读取出来,并转为MaxCompute Record对象;
  2. MaxCompute Reader将MaxCompute Record转换为同步引擎的Record对象,投递给框架;
  3. 框架收到Record放入缓存队列;
  4. Writer从框架接收引擎Record,再转换为MaxCompute Record,并通过Tunnel client将数据进行序列化后通过网络传输给Tunnel server。

数据集成Arrow列存同步架构:

当列存到列存同步场景下,将列存先转为行存格式,再将行存格式转为列存格式,中间多了不必要的转换及序列化操作。通过构建全新的 ArrowTabularRecord 数据结构,DataWorks实现了对Arrow列式数据的原生支持,跳过行式转换环节,实现端到端列存"短路同步",大幅提升吞吐、降低延迟。

同步引擎基于新的面向Arrow列存格式的ArrowTabularRecord,列存到列存数据流转如下:

同步核心流程如下:

  1. 通过MaxCompute Tunnel Arrow API将数据直接按照Arrow列存格式读取出来,并存入ArrowTabularRecord,投递给框架;

  2. 框架收到Record放入缓存队列;

  3. Writer从框架收到引擎ArrowTabularRecord,直接通过Tunnel Arrow API将数据基于Arrow格式,省去做序列化的开销,直接将内存二进制数据传输给Tunnel Server。

核心能力:全链路列式加速,支持主流数据源

DataWorks数据集成现已全面支持 MaxCompute、Hologres、Hive/OSS/HDFS(Parquet/ORC) 等主流列存数据源的Arrow读写能力,用户仅需在任务配置中添加 "useArrow": true 即可一键启用。

列存直读直写,显著提升性能

数据源 支持能力 同步性能提升
MaxCompute 通过Tunnel Arrow API直读列存数据 同步性能提升 200%
Hologres 支持Arrow格式导出,避免JDBC行式瓶颈 同步性能提升 95%
Hive\OSS\HDFS等分布式文件 直接读取Parquet/ORC底层Arrow格式数据 PARQUET同步性能提升5.55倍 ORC同步性能提升 9.85倍

示例:Hive ORC → MaxCompute 写入,原需数小时的任务,现可在数十分钟内完成。

性能压测报告

我们对多个典型场景进行了端到端性能测试,同步性能显著提升,可实现从小时级到分钟级的数据同步周期提升:

场景一:MaxCompute列存短路同步(Arrow → Arrow)

并发数 传统行存 Arrow列存 性能提升
1 67.8 MB/s 3740 R/s 212.6 MB/s 11462 R/s +206.5%
3 185.6 MB/s 10226 R/s 569.9 MB/s 30728 R/s +200.5%
8 462.1 MB/s 25467 R/s 1321.0 MB/s 71143 R/s +197.4%

场景二:Hologres → MaxCompute 同步

并发数 传统同步 Arrow同步 性能提升
4 439.1 MB/s 216480 R/s 906.1 MB/s 404270 R/s +87%
8 773.3 MB/s 381300 R/s 1669.1 MB/s 745654 R/s +95%

场景三:Parquet/ORC → MaxCompute 同步

并发数 传统同步 Arrow同步 性能提升
Parquet 26.1 MB/s 35631 R/s 1198.1 MB/s 233587 R/s 5.55倍
ORC 21.4 MB/s 27661 R/s 3256.3 MB/s 300326 R/s 9.85倍

备注:Parquet、ORC文件可以在HDFS、OSS等分布式文件系统中

核心优势:不止于快,更稳、更低成本

特性 价值说明
高性能 吞吐量提升最高达10倍,适合宽表、大数据量搬站同步
低资源消耗 零拷贝 + 内存复用,降低GC压力,节省计算成本
高兼容性 支持MaxCompute、Hologres、Hive等主流列存系统
易用性 仅需配置useArrow: true,无需代码改造

典型应用场景:释放数据流转的无限可能

场景一:大数据搬站迁移

痛点 :从Hive向MaxCompute迁移数百TB数据,耗时较久,影响业务上线 方案 :启用Arrow同步,列存直传,避免格式转换 成果 :迁移时间从小时级同步缩短至分钟级 ,效率提升10倍以上

场景二:异构数据源融合与湖仓一体化

支持Hive(湖)与Hologres/MaxCompute(仓)之间的列存高效互通,为数据湖仓一体架构提供核心数据流转引擎,实现"一数多用、湖仓协同"。

如何使用?一步开启Arrow加速

整库解决方案

数据集成已经发布Hive->MaxCompute整库同步功能,默认会自动根据同步字段类型,渲染开启Arrow高性能同步能力。

💡 无需代码改造,无需理解底层细节,一键开启高性能同步

单表离线同步

DataWorks数据集成单表离线任务,在reader和writer parameter下添加 useArrow: true 参数,即可开启列式加速(由于是列存格式直读直写,开启前提是需要保证源端和目标端列类型保持一致):

json 复制代码
{
  "type": "job",
  "steps": [
    {
      "stepType": "hive",
      "parameter": {
        "useArrow": true,
        "datasource": "my_datasource",
        "column": [
          "col1",
          "col2"
        ],
        "readMode": "hdfs",
        "table": "table"
      },
      "name": "Reader",
      "category": "reader"
    },
    {
      "stepType": "odps",
      "parameter": {
        "useArrow": true,
        "truncate": false,
        "datasource": "odps_test",
        "column": [
          "col1",
          "col2"
        ],
        "table": "table"
      },
      "name": "Writer",
      "category": "writer"
    }
  ],
  "setting": {
    "speed": {
      "concurrent": 3
    }
  }
}

未来演进:构建更强大的数据同步生态

DataWorks将持续深化Arrow能力,打造企业级高性能数据流转平台:

  • 更多数据源支持:扩展至HDFS、Paimon、ClickHouse、Iceberg等;

  • 智能调度优化:根据数据特征自动选择Arrow或行式模式;

  • 生态融合:为DataWorks数据搬站,提供端到端数据解决方案

结语:让数据真正高性能"跑"起来

DataWorks数据集成引入Apache Arrow列存同步能力,列式、零拷贝、内存级传输为同步性能带来显著提升。DataWorks数据集成正以技术创新为引擎,帮助企业打破数据孤岛、消除性能瓶颈,让数据在湖仓之间、系统之间、业务之间高速、稳定、低成本流动。

相关推荐
NAGNIP4 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab5 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab5 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP9 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年9 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼9 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS9 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区10 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈10 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang11 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx