news 2025/12/25 8:02:09

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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列存性能提升
167.8 MB/s
3740 R/s
212.6 MB/s
11462 R/s
+206.5%
3185.6 MB/s
10226 R/s
569.9 MB/s
30728 R/s
+200.5%
8462.1 MB/s
25467 R/s
1321.0 MB/s
71143 R/s
+197.4%
场景二:Hologres → MaxCompute 同步
并发数传统同步Arrow同步性能提升
4439.1 MB/s
216480 R/s
906.1 MB/s
404270 R/s
+87%
8773.3 MB/s
381300 R/s
1669.1 MB/s
745654 R/s
+95%
场景三:Parquet/ORC → MaxCompute 同步
并发数传统同步Arrow同步性能提升
Parquet26.1 MB/s
35631 R/s
1198.1 MB/s
233587 R/s
5.55倍
ORC21.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 参数,即可开启列式加速(由于是列存格式直读直写,开启前提是需要保证源端和目标端列类型保持一致):

{"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数据集成正以技术创新为引擎,帮助企业打破数据孤岛、消除性能瓶颈,让数据在湖仓之间、系统之间、业务之间高速、稳定、低成本流动。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/23 20:06:57

【课程设计/毕业设计】基于springboot+Vue的课程设计选题管理系统设计基于SpringBoot和Vue的毕业设计选题管理系统的设计与实现【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2025/12/23 20:00:53

光伏MPPT仿真之变步长扰动观察法探索

光伏MPPT仿真-变步长扰动观察法 定步长,有配套video 在光伏系统中,最大功率点跟踪(MPPT)技术至关重要,它能让光伏电池始终在最大功率点附近工作,提升发电效率。今天咱就唠唠变步长扰动观察法,这…

作者头像 李华
网站建设 2025/12/23 19:51:18

python语言随机人物头像图片生成器程序代码

import random from PIL import Image, ImageDrawclass RandomAvatarGenerator:def __init__(self, avatar_size200):"""初始化头像生成器,默认生成200x200的头像"""self.size avatar_sizeself.center (avatar_size // 2, avatar_s…

作者头像 李华
网站建设 2025/12/23 19:48:39

基于 Python 的人脸+服装双重验证照片识别系统

从海量照片中精准找出特定人物的照片,结合人脸识别与服装颜色检测的双重验证方案。 背景 在活动、运动会等场景中,摄影师会拍摄大量照片。如何从成百上千张照片中快速找出某个特定人物的照片?单纯依靠人脸识别可能会有误匹配,本文介绍一种结合人脸识别和服装颜色检测的双重…

作者头像 李华
网站建设 2025/12/23 19:48:31

计算机毕业设计springboot牙医诊所管理系统的设计与实现 基于SpringBoot的口腔门诊综合管理平台的设计与实现 SpringBoot驱动的数字化牙科诊所运营系统开发实战

计算机毕业设计springboot牙医诊所管理系统的设计与实现m077bax2 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。当“看牙”从线下排队变成指尖预约,当消毒记录从纸质…

作者头像 李华
网站建设 2025/12/23 19:43:52

有什么好用的降AIGC疑似度工具,知网AI率90%!

2025年起,高校已明确要求毕业论文要检测AIGC率,AI率高于30%或40%就不能参加答辩,而部分学校、硕士论文更加严格,要求在20%以内。 这其中,大多数高校使用的AIGC检测系统是知网、万方、维普等主流查重系统,这…

作者头像 李华