Todos os produtos
Search
Central de documentação

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

Última atualização: Jun 27, 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 colunar Apache Arrow. Essa solução utiliza transferência direta em memória e tecnologia de cópia zero para converter a transferência de dados de um modelo baseado em linhas para um modelo 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 por linhas frequentemente enfrentam gargalos de desempenho causados por serializações, desserializações e conversões de tipo frequentes. Esse cenário é comum 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 serviços e a eficiência da análise de dados. Esta solução resolve a ineficiência no repasse de dados entre fontes de armazenamento colunar em 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 serviços. Solução: Ative a sincronização de alto desempenho com Apache Arrow para transferir dados diretamente em formato colunar e evitar sobrecarga de conversão. Resultado: O tempo de migração cai de horas para minutos, com aumento de desempenho superior a 10x.

Cenário 2: Integração de fontes 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, possibilitando a sinergia entre lake e warehouse.

Arquitetura da solução

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

Arquitetura tradicional de sincronização com armazenamento por linhas

Na arquitetura tradicional, os dados são processados linha por linha. Mesmo que a source e o destino utilizem formato de armazenamento colunar, como Parquet ou ORC, o mecanismo de sincronização converte os dados em objetos Record genéricos baseados em linhas. Esse formato foi projetado para armazenamento de linha única. Cada objeto Record define várias colunas (Columns), e cada Column contém o valor (Value) daquela coluna na linha atual. Considere, por exemplo, a sincronização de dados de armazenamento colunar do MaxCompute (ODPS) para o MaxCompute (ODPS):

image

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

  1. Decodificação pelo Reader: O reader lê dados colunares da source, como o MaxCompute, decodifica e converte linha por linha em objetos Record internos do framework.

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

  3. Codificação pelo Writer: O writer recupera os objetos Record do framework e os codifica no formato colunar exigido pelo destino antes da gravação.

Esse fluxo envolve múltiplas conversões de formato de dados, serialização/desserialização e criação frequente de objetos. Consequentemente, há alto consumo de recursos de CPU e memória, coleta de lixo (GC) frequente e limitação do throughput geral.

Arquitetura de sincronização com armazenamento colunar Arrow

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

image

A introdução da estrutura de dados ArrowTabularRecord otimiza o processo de sincronização da seguinte forma:

  1. Leitura direta: O reader usa a API Tunnel Arrow do MaxCompute para ler dados colunares diretamente da source e os encapsula em objetos ArrowTabularRecord para entrega em lote ao framework.

  2. Transferência pelo framework: O framework transfere diretamente o ArrowTabularRecord, que contém dados binários colunares.

  3. Gravação direta: O writer utiliza a API Tunnel Arrow para recuperar dados binários formatados em Arrow diretamente do ArrowTabularRecord. Em seguida, emprega tecnologia de cópia zero para transferir os dados 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" de ponta a ponta para armazenamentos colunares, melhorando expressivamente o throughput e reduzindo 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

Ao utilizar uma tarefa de sincronização offline de banco de dados completo, como em uma migração do Hive para o MaxCompute, o sistema detecta automaticamente os tipos de campo das tabelas de source e destino e ativa a sincronização de alto desempenho com Apache Arrow. Nenhuma configuração manual é necessária. Visualize essa definição no editor de tarefas navegando até Advanced Configuration > Advanced Parameters > Runtime Config.

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

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

Ao configure uma tarefa de sincronização offline de tabela única, ative manualmente esse recurso no editor de código adicionando "useArrow": true à configuração de parameter tanto do Reader quanto do Writer.

Pré-requisito: Para ativar esse recurso, as definições de tipo de coluna das tabelas de source e destino devem ser idênticas, pois esse modo ignora a etapa de conversão de tipo 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 fontes 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 de armazenamento colunar via API Tunnel Arrow

Desempenho de replicação melhorou em 200%

Hologres

Suporte à exportação em formato Arrow para evitar gargalos de JDBC baseados em linhas

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 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 de armazenamento colunar do MaxCompute (Arrow → Arrow)

Simultaneidade

Armazenamento por linhas tradicional

Armazenamento colunar 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 colunar

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

10,86x

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