Todos os produtos
Search
Central de documentação

DataWorks:Sincronização de alto desempenho com o formato de armazenamento em colunas Arrow

Última atualização: Aug 24, 2026

A integração de dados do DataWorks oferece suporte à sincronização de dados de alto desempenho entre fontes heterogêneas por meio do formato de armazenamento em colunas Apache Arrow. Essa solução utiliza transferência direta em memória e tecnologia zero-copy para converter a transferência de dados de um modelo baseado em linhas para um baseado em colunas, aumentando significativamente o throughput de sincronização para grandes volumes de dados. Em cenários de teste, o desempenho pode aumentar quase 10 vezes.

Casos de uso

Ao processar grandes volumes de dados, soluções de sincronização baseadas em armazenamento em linhas frequentemente enfrentam gargalos de desempenho. Tais gargalos resultam de serializações, desserializações e conversões de tipo frequentes. Esse problema é particularmente crítico durante migrações de data warehouse, como de Hive para MaxCompute, ou na construção de arquiteturas de data lakehouse. Tempos prolongados de sincronização para terabytes de dados podem comprometer o lançamento de service e a eficiência da análise de dados. Esta solução resolve a ineficiência no encaminhamento de dados entre source de armazenamento em colunas de grande escala e reduz o tempo de sincronização de horas para minutos.

Cenário 1: Migração de big data

Desafio: Migrar centenas de terabytes de dados do Hive para o MaxCompute consome muito tempo e atrasa o lançamento de service.Solução: Ative a sincronização Arrow para transferência direta em formato colunar e evite conversões de formato.Resultado: O tempo de migração cai de horas para minutos, elevando a eficiência em mais de 10 vezes.

Cenário 2: Integração de source de dados heterogêneas e arquitetura de data lakehouse

Os dados fluem de forma livre e eficiente entre o data lake (como o ecossistema Hive) e o data warehouse (Hologres/MaxCompute). O valor central reside no uso de uma única cópia dos dados para múltiplas finalidades, viabilizando a sinergia entre lake e warehouse.

Arquitetura da solução

A integração de dados do DataWorks incorpora o padrão Apache Arrow para armazenamento colunar em memória. Ela refatora o método de transferência de dados entre o Reader e o Writer e altera o processo de um tratamento baseado em linhas para uma passagem direta baseada em colunas.

Arquitetura tradicional de sincronização com armazenamento em linhas

Na arquitetura tradicional, o processamento dos dados ocorre linha a linha. Mesmo quando origem e destino utilizam formato de armazenamento em colunas, como Parquet ou ORC, os dados são convertidos em objetos Record genéricos baseados em linhas dentro do mecanismo de sincronização. Esse formato foi projetado para armazenamento de linhas individuais. Cada objeto Record define várias Columns, e cada Column contém o Value correspondente àquela coluna na linha atual. Considere, por exemplo, a sincronização de dados em formato colunar do MaxCompute (ODPS) para o MaxCompute (ODPS):

image

Esse processo envolve as etapas abaixo e gera a seguinte sobrecarga de desempenho:

  1. Decodificação pelo Reader: O Reader lê os dados em formato colunar da source, como o MaxCompute. Em seguida, decodifica esses dados e os converte, linha por linha, em objetos Record internos do framework.

  2. Transferência pelo framework: O framework transfere uma grande quantidade de objetos Record na fila de memória.

  3. Codificação pelo Writer: O Writer recupera os objetos Record do framework, codifica-os no formato de armazenamento em colunas exigido pelo destino e grava os dados.

Esse fluxo exige múltiplas conversões de formato de dados, serialização e desserialização, além de criação frequente de objetos. Como consequência, há alto consumo de recursos de CPU e memória, coleta de lixo (GC) recorrente e limitação do throughput geral.

Arquitetura de sincronização com armazenamento em colunas Arrow

A nova arquitetura baseada em Arrow implementa um fluxo de dados colunar ponta a ponta. Os dados mantêm seu formato de armazenamento em colunas ao longo de todo o pipeline de sincronização, eliminando a sobrecarga da conversão baseada em linhas.

image

Com a introdução da estrutura de dados ArrowTabularRecord, o processo de sincronização é otimizado da seguinte forma:

  1. Leitura direta pelo Reader: O Reader utiliza a API Tunnel Arrow do MaxCompute para ler diretamente os dados em formato colunar da source. Depois, encapsula esses dados em objetos ArrowTabularRecord e os entrega ao framework em lotes.

  2. Transferência pelo framework: O framework transmite diretamente os objetos ArrowTabularRecord, que contêm dados binários em formato colunar.

  3. Gravação direta pelo Writer: O Writer usa a API Tunnel Arrow para recuperar dados binários formatados em Arrow diretamente do ArrowTabularRecord e emprega tecnologia zero-copy para transferi-los ao destino, como um Tunnel Server, sem nova serialização.

Essa arquitetura fornece suporte nativo ao Arrow e elimina a etapa intermediária de conversão baseada em linhas. Assim, alcança-se uma "sincronização em curto-circuito" ponta a ponta para armazenamentos em colunas, o que aumenta expressivamente o throughput e reduz a latência.

image

Etapas de implementação

Adicione parâmetros específicos a uma tarefa de integração de dados do DataWorks para ativar a sincronização Arrow de alto desempenho. Atualmente, esse recurso é compatível com tarefas de sincronização offline de banco de dados completo e de tabela única nas quais a source e o destino são MaxCompute, Hologres ou Hive/OSS/Hadoop Distributed File System (HDFS) (Parquet/ORC).

Método 1: Sincronização offline de banco de dados completo

Utilize o recurso full-database offline synchronization task de integração de dados. Por exemplo, em uma sincronização offline do Hive para o MaxCompute, o sistema detecta automaticamente os tipos de campo das tabelas de origem e destino e ativa a sincronização Arrow de alto desempenho. Nenhuma configuração manual é necessária. Visualize essa configuração em Advanced Configuration > Advanced Parameters > Runtime Config no canto superior direito do editor de tarefas.

No Runtime Config, localize o parâmetro Enable Arrow short-circuit transfer. As opções disponíveis são Auto (padrão), Force enable e Force disable.

Método 2: Sincronização offline de tabela única

Ao configurar uma tarefa de sincronização offline de tabela única, ative manualmente o recurso no code editor. Para isso, adicione "useArrow": true à configuração de parameter tanto do Reader quanto do Writer.

Pré-requisito: Para ativar esse recurso, as definições de tipos de coluna das tabelas de origem e destino devem ser idênticas. Isso ocorre porque esse modo ignora a etapa de conversão de tipos e transfere os dados diretamente na memória.

Veja abaixo um exemplo de configuração para sincronizar dados do Hive (Reader) para o MaxCompute (Writer):

{
  "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
    }
  }
}

Validação de desempenho

As seções a seguir apresentam a melhoria de desempenho para diversas combinações de source de dados. As condições de teste para validação de desempenho são:

  • Condições do teste de estresse: Especificações do servidor: 64 núcleos, 256 GB de memória. Placa de rede: 25 Gbit/s.

  • Volume de dados do teste: 42.045.700 registros.

Fonte de dados

Recurso suportado

Melhoria no desempenho de replicação

MaxCompute

Leitura direta de dados em formato colunar via API Tunnel Arrow

Desempenho de replicação melhorou em 200%

Hologres

Suporte à exportação em formato Arrow para evitar gargalos baseados em linhas do Java Database Connectivity (JDBC)

Desempenho de replicação melhorou em 95%

Hive, OSS, HDFS e outros sistemas de arquivos distribuídos

Leitura direta de dados subjacentes em formato Arrow a partir de Parquet/ORC

Desempenho de sincronização PARQUET melhorou em 5,55 vezes. Desempenho de sincronização ORC melhorou em 9,85 vezes.

Cenário 1: Sincronização em curto-circuito com armazenamento em colunas do MaxCompute (Arrow → Arrow)

Simultaneidade

Armazenamento em linhas tradicional

Armazenamento em colunas Arrow

Melhoria de desempenho

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%

Cenário 2: Sincronização Hologres → MaxCompute

Simultaneidade

Sincronização tradicional

Sincronização Arrow

Melhoria de desempenho

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%

Cenário 3: Sincronização Parquet/ORC → MaxCompute

Formato de armazenamento em colunas

Sincronização tradicional

Sincronização Arrow

Melhoria de desempenho

Parquet

26,1 MB/s

35631 R/s

1198,1 MB/s

233587 R/s

5,55 vezes

ORC

21,4 MB/s

27661 R/s

3256,3 MB/s

300326 R/s

9,85 vezes

Parquet e ORC são formatos de armazenamento em colunas utilizados em sistemas de arquivos distribuídos, como HDFS e OSS.