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 等列存格式存储的数据,同步核心流程分为:
通过 MaxCompute Tunnel 将数据按行读取出来,并转为 MaxCompute Record 对象;
MaxCompute Reader 将 MaxCompute Record 转换为同步引擎的 Record 对象,投递给框架;
框架收到 Record 放入缓存队列;
Writer 从框架接收引擎 Record,再转换为 MaxCompute Record,并通过 Tunnel client 将数据进行序列化后通过网络传输给 Tunnel server。
数据集成 Arrow 列存同步架构:
当列存到列存同步场景下,将列存先转为行存格式,再将行存格式转为列存格式,中间多了不必要的转换及序列化操作。通过构建全新的 ArrowTabularRecord 数据结构,DataWorks 实现了对 Arrow 列式数据的原生支持,跳过行式转换环节,实现端到端列存“短路同步”,大幅提升吞吐、降低延迟。
同步引擎基于新的面向 Arrow 列存格式的 ArrowTabularRecord,列存到列存数据流转如下:
同步核心流程如下:
通过 MaxCompute Tunnel Arrow API 将数据直接按照 Arrow 列存格式读取出来,并存入 ArrowTabularRecord,投递给框架;
框架收到 Record 放入缓存队列;
Writer 从框架收到引擎 ArrowTabularRecord,直接通过 Tunnel Arrow API 将数据基于 Arrow 格式,省去做序列化的开销,直接将内存二进制数据传输给 Tunnel Server。
核心能力:全链路列式加速,支持主流数据源
DataWorks 数据集成现已全面支持 MaxCompute、Hologres、Hive/OSS/HDFS(Parquet/ORC) 等主流列存数据源的 Arrow 读写能力,用户仅需在任务配置中添加 "useArrow": true 即可一键启用。
列存直读直写,显著提升性能
示例:Hive ORC → MaxCompute 写入,原需数小时的任务,现可在数十分钟内完成。
性能压测报告
我们对多个典型场景进行了端到端性能测试,同步性能显著提升,可实现从小时级到分钟级的数据同步周期提升:
场景一:MaxCompute 列存短路同步(Arrow → Arrow)
场景二:Hologres → MaxCompute 同步
场景三:Parquet/ORC → MaxCompute 同步
备注:Parquet、ORC 文件可以在 HDFS、OSS 等分布式文件系统中
核心优势:不止于快,更稳、更低成本
典型应用场景:释放数据流转的无限可能
场景一:大数据搬站迁移
痛点:从 Hive 向 MaxCompute 迁移数百 TB 数据,耗时较久,影响业务上线
方案:启用 Arrow 同步,列存直传,避免格式转换
成果:迁移时间从小时级同步缩短至分钟级,效率提升 10 倍以上
场景二:异构数据源融合与湖仓一体化
支持 Hive(湖)与 Hologres/MaxCompute(仓)之间的列存高效互通,为数据湖仓一体架构提供核心数据流转引擎,实现“一数多用、湖仓协同”。
如何使用?一步开启 Arrow 加速
整库解决方案
数据集成已经发布 Hive->MaxCompute 整库同步功能,默认会自动根据同步字段类型,渲染开启 Arrow 高性能同步能力。
💡 无需代码改造,无需理解底层细节,一键开启高性能同步。
单表离线同步
DataWorks 数据集成单表离线任务,在 reader 和 writer parameter 下添加 useArrow: true 参数,即可开启列式加速(由于是列存格式直读直写,开启前提是需要保证源端和目标端列类型保持一致):
未来演进:构建更强大的数据同步生态
DataWorks 将持续深化 Arrow 能力,打造企业级高性能数据流转平台:
更多数据源支持:扩展至 HDFS、Paimon、ClickHouse、Iceberg 等;
智能调度优化:根据数据特征自动选择 Arrow 或行式模式;
生态融合:为 DataWorks 数据搬站,提供端到端数据解决方案
结语:让数据真正高性能“跑”起来
DataWorks 数据集成引入 Apache Arrow 列存同步能力,列式、零拷贝、内存级传输为同步性能带来显著提升。DataWorks 数据集成正以技术创新为引擎,帮助企业打破数据孤岛、消除性能瓶颈,让数据在湖仓之间、系统之间、业务之间高速、稳定、低成本流动。







评论