引言

在大數據時代,數據集成作為企業數據流轉的核心樞紐,承擔着異構數據源之間高效同步的重要職責。隨着數據量的爆炸式增長,傳統的行存同步方式在面對大規模列存數據處理時,逐漸顯露出性能瓶頸。

為解決這一挑戰,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)列存為例:

DataWorks 又又又升級了,這次我們通過 Arrow 列存格式讓數據同步速度提升10倍!_阿里雲

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列式數據的原生支持,跳過行式轉換環節,實現端到端列存“短路同步”,大幅提升吞吐、降低延遲。

DataWorks 又又又升級了,這次我們通過 Arrow 列存格式讓數據同步速度提升10倍!_大數據_02

同步引擎基於新的面向Arrow列存格式的ArrowTabularRecord,列存到列存數據流轉如下:

DataWorks 又又又升級了,這次我們通過 Arrow 列存格式讓數據同步速度提升10倍!_阿里雲_03

同步核心流程如下:

  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 又又又升級了,這次我們通過 Arrow 列存格式讓數據同步速度提升10倍!_阿里雲_04

💡 無需代碼改造,無需理解底層細節,一鍵開啓高性能同步

單表離線同步

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數據集成正以技術創新為引擎,幫助企業打破數據孤島、消除性能瓶頸,讓數據在湖倉之間、系統之間、業務之間高速、穩定、低成本流動。