Todos os produtos
Search
Central de documentação

DataWorks:Doris

Última atualização: Jul 02, 2026

A fonte de dados Doris permite ler e gravar dados em bancos de dados Doris para processamento de dados em grande escala. Este tópico descreve como usar o DataWorks para sincronizar dados com o Doris.

Tipos de dados suportados

Diferentes versões do Doris suportam diferentes tipos de dados e modelos de agregação. Para informações sobre todos os tipos de dados suportados em cada versão do Doris, consulte a documentação oficial do Doris. A tabela a seguir descreve os principais tipos de dados suportados.

Tipo de dados

Modelo suportado

Versão do Doris

SMALLINT

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

INT

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

BIGINT

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

LARGEINT

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

FLOAT

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

DOUBLE

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

DECIMAL

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

DECIMALV3

Aggregate,Unique,Duplicate

Versões posteriores a 1.2.1, 2.x

DATE

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

DATETIME

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

DATEV2

Aggregate,Unique,Duplicate

1.2.x, 2.x

DATATIMEV2

Aggregate,Unique,Duplicate

1.2.x, 2.x

CHAR

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

VARCHAR

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

STRING

Aggregate,Unique,Duplicate

0.x.x, 1.1.x, 1.2.x, 2.x

VARCHAR

Aggregate,Unique,Duplicate

1.1.x, 1.2.x, 2.x

ARRAY

Duplicate

1.2.x, 2.x

JSONB

Aggregate,Unique,Duplicate

1.2.x, 2.x

HLL

Aggregate

0.x.x, 1.1.x, 1.2.x, 2.x

BITMAP

Aggregate

0.x.x, 1.1.x, 1.2.x, 2.x

QUANTILE_STATE

Aggregate

1.2.x, 2.x

Preparar um ambiente do ApsaraDB for OceanBase antes da sincronização de dados

Antes de usar o DataWorks para sincronizar dados com uma fonte de dados Doris, prepare um ambiente Doris. Isso garante que a tarefa de sincronização de dados possa ser configurada e sincronize dados com a fonte de dados Doris conforme o esperado. As informações a seguir descrevem como preparar um ambiente Doris para sincronização de dados com uma fonte de dados Doris.

Criar uma conta e conceder permissões

Crie uma conta para fazer login no banco de dados Doris e realizar operações subsequentes. Defina uma senha para a conta, que será usada nas conexões subsequentes ao banco de dados Doris. Se preferir usar o usuário padrão root do Doris para fazer login no banco de dados, defina uma senha para o usuário root. Por padrão, o usuário root não possui senha. Execute a seguinte instrução SQL no Doris para definir a senha:

SET PASSWORD FOR 'root' = PASSWORD('Password')

Configurar a conexão de rede do Doris

Para usar o método StreamLoad para gravar dados, acesse o endereço IP privado de um nó FE. Se você acessar o endereço IP público do nó FE, será redirecionado para o endereço IP privado de um nó BE. Para mais informações sobre o redirecionamento, consulte Problemas de operação de dados. Nesse caso, estabeleça conexões de rede entre a fonte de dados e um grupo de recursos serverless ou um grupo de recursos exclusivo do Data Integration para permitir que o grupo de recursos acesse a fonte de dados pela rede interna. Para mais informações sobre como estabelecer uma conexão de rede entre o banco de dados Doris e um grupo de recursos, consulte Soluções de conectividade de rede.

Add a data source

Before you develop a synchronization task in DataWorks, you must add the required data source to DataWorks by following the instructions in Data source management. You can view parameter descriptions in the DataWorks console to understand the meanings of the parameters when you add a data source.

Observe os requisitos de configuração para os seguintes itens da fonte de dados Doris:

  • JdbcUrl: insira a string de conexão JDBC, que inclui o endereço IP, o número da porta, o banco de dados e os parâmetros de conexão. Endereços IP públicos e privados são suportados. Se usar um endereço IP público, certifique-se de que o grupo de recursos do Data Integration possa acessar o host onde a instância do Doris está localizada.

  • FE endpoint: insira os endereços IP e as portas dos nós FE. Se o cluster possuir vários nós FE, insira vários endpoints separados por vírgulas, por exemplo, ip1:port1,ip2:port2. Durante o teste de conexão, o DataWorks testa a conectividade de todos os endpoints FE especificados.

  • Username: insira o nome de usuário para acessar o banco de dados Doris.

  • Password: insira a senha correspondente ao nome de usuário.

Desenvolver uma tarefa de sincronização de dados

For information about the entry point for and the procedure of configuring a synchronization task, see the following configuration guides.

Apêndice: Código e parâmetros

Configure a batch synchronization task by using the code editor

If you want to configure a batch synchronization task by using the code editor, you must configure the related parameters in the script based on the unified script format requirements. For more information, see Script mode configuration. The following information describes the parameters that you must configure for data sources when you configure a batch synchronization task by using the code editor.

Exemplo de script do Reader

{
  "type": "job",
  "version": "2.0",// The version number.
  "steps": [
    {
      "stepType": "doris",// The plug-in name.
      "parameter": {
        "column": [// The names of the columns.
          "id"
        ],
        "connection": [
          {
            "querySql": [
              "select a,b from join1 c join join2 d on c.id = d.id;"
            ],
            "datasource": ""// The name of the data source.
          }
        ],
        "where": "",// The WHERE clause.
        "splitPk": "",// The shard key.
        "encoding": "UTF-8"// The encoding format.
      },
      "name": "Reader",
      "category": "reader"
    },
    {
      "stepType": "stream",
      "parameter": {},
      "name": "Writer",
      "category": "writer"
    }
  ],
  "setting": {
    "errorLimit": {
      "record": "0"// The maximum number of dirty data records allowed.
    },
    "speed": {
      "throttle": true,// Specifies whether to enable throttling. The value false indicates that throttling is disabled, and the value true indicates that throttling is enabled. The mbps parameter takes effect only when the throttle parameter is set to true.
      "concurrent": 1,// The maximum number of parallel threads.
      "mbps": "12"// The maximum transmission rate. Unit: MB/s.
    }
  },
  "order": {
    "hops": [
      {
        "from": "Reader",
        "to": "Writer"
      }
    ]
  }
}

Parâmetros do script do Reader

Parâmetro

Descrição

Obrigatório

Valor padrão

datasource

O nome da fonte de dados. Deve ser igual ao nome da fonte de dados adicionada. Você pode adicionar fontes de dados pelo editor de código.

Sim

Sem valor padrão

table

O nome da tabela da qual deseja ler dados. Cada tarefa de sincronização pode ser usada para sincronizar dados de apenas uma tabela.

Para uma tabela fragmentada, use o parâmetro table para especificar as partições das quais deseja ler dados. Exemplos:

  • Configure um intervalo para ler dados de bancos de dados e tabelas fragmentados. Por exemplo, 'table_[0-99]' especifica que os dados são lidos de 'table_0', 'table_1' e 'table_2', até 'table_99'.

  • Se as tabelas possuírem sufixos numéricos do mesmo comprimento, como 'table_000', 'table_001' e 'table_002', até 'table_999', configure o parâmetro como '"table": ["table_00[0-9]", "table_0[10-99]", "table_[100-999]"]'.

Nota

O Doris Reader lê dados das colunas especificadas pelo parâmetro column nas partições especificadas pelo parâmetro table. Se uma partição ou coluna especificada não existir, a tarefa de sincronização falhará.

Sim

Sem valor padrão

column

As colunas que deseja sincronizar. As colunas são descritas em um array JSON. Por padrão, todas as colunas são sincronizadas. Por exemplo, use ["*"].

  • Poda de colunas: selecione um subconjunto de colunas para exportar.

  • A ordem das colunas pode ser alterada. Isso significa que você pode especificar colunas em uma ordem diferente da ordem definida pelo esquema da tabela de origem.

  • Configuração de constantes: siga a sintaxe SQL do Doris. Exemplo: ["id","`table`","1","'mingya.wmy'","'null'","to_char(a+1)","2.3","true"].

    • id: um nome de coluna.

    • table: o nome de uma coluna que contém palavras-chave reservadas.

    • 1: uma constante inteira.

    • 'mingya.wmy': uma constante de string, delimitada por aspas simples (').

    • null:

      • " " indica uma string vazia.

      • null indica um valor nulo.

      • 'null' indica a string "null".

    • to_char(a+1): uma expressão de função usada para calcular o comprimento de uma string.

    • 2.3: uma constante de ponto flutuante.

    • true: um valor booleano.

  • O parâmetro column deve especificar explicitamente todas as colunas das quais deseja ler dados. Esse parâmetro não pode ser deixado vazio.

Sim

Sem valor padrão

splitPk

Para melhorar o desempenho de leitura, use o parâmetro splitPk para especificar uma chave de fragmentação. O Data Integration usa essa chave para particionar os dados e executar tarefas concorrentes.

  • Defina o parâmetro splitPk como o nome da coluna de chave primária da tabela. Os dados podem ser distribuídos uniformemente entre diferentes fragmentos com base na coluna de chave primária, em vez de se concentrarem apenas em fragmentos específicos.

  • O parâmetro splitPk suporta fragmentação apenas para dados de tipos inteiros. Se definir o parâmetro splitPk como um campo de tipo de dado não suportado, como string, ponto flutuante ou data, a configuração desse parâmetro será ignorada e um único thread será usado para ler dados.

  • Se o parâmetro splitPk não for fornecido ou for deixado vazio, um único thread será usado para ler dados.

Não

Sem valor padrão

where

A condição de filtro. Em muitos cenários de negócio, pode ser necessário sincronizar apenas os dados do dia atual. Para isso, defina a condição where como gmt_create > $bizdate.

  • Use a cláusula WHERE para ler dados incrementais. Se o parâmetro where não for fornecido ou for deixado vazio, o Doris Reader lê todos os dados.

  • Não defina o parâmetro where como limit 10. Esse valor não está em conformidade com as restrições do Doris para a cláusula SQL WHERE.

Não

Sem valor padrão

querySql (parâmetro avançado, disponível apenas no editor de código)

Em alguns cenários de negócio, o parâmetro where pode não ser suficiente para descrever as condições de filtro desejadas. Use esse parâmetro para especificar uma consulta SQL personalizada para filtragem. Se configurar esse parâmetro, o Data Integration ignora os parâmetros table, column, where e splitPk, e usa a consulta personalizada para recuperar dados. Por exemplo, para juntar várias tabelas antes da sincronização, use uma consulta como select a,b from table_a join table_b on table_a.id = table_b.id. O parâmetro querySql tem prioridade maior que os parâmetros table, column, where e splitPk. O parâmetro datasource ainda é necessário para que o sistema recupere detalhes de conexão, como nome de usuário e senha.

Nota

O nome do parâmetro querySql diferencia maiúsculas de minúsculas. Por exemplo, querysql não tem efeito.

Não

Sem valor padrão

Exemplo de script do Writer

{
  "stepType": "doris",// The plug-in name.
  "parameter":
  {
    "postSql":// The SQL statement that you want to execute after the synchronization task is run.
    [],
    "preSql":
    [],// The SQL statement that you want to execute before the synchronization task is run.
    "datasource":"doris_datasource",// The name of the data source.
    "table": "doris_table_name",// The name of the table.
    "column":
    [
      "id",
      "table_id",
      "table_no",
      "table_name",
      "table_status"
    ],
    "loadProps":{
      "column_separator": "\\x01",// The column delimiter of data in the CSV format.
      "line_delimiter": "\\x02"// The row delimiter of data in the CSV format.
    }
  },
  "name": "Writer",
  "category": "writer"
}

Parâmetros do script do Writer

Parâmetro

Descrição

Obrigatório

Valor padrão

datasource

O nome da fonte de dados. Deve ser igual ao nome da fonte de dados adicionada. Você pode adicionar fontes de dados pelo editor de código.

Sim

Sem valor padrão

table

O nome da tabela na qual deseja gravar dados.

Sim

Sem valor padrão

column

As colunas de destino nas quais gravar dados. Especifique os nomes das colunas em um array, por exemplo, "column":["id","name","age"]. Para gravar dados em todas as colunas em ordem, use um asterisco (*) no array, por exemplo, "column":["*"].

Sim

Sem valor padrão

preSql

As instruções SQL a serem executadas antes do início da tarefa de sincronização de dados. Na interface sem código, execute apenas uma instrução SQL. No editor de código, execute várias instruções SQL. Por exemplo, use essas instruções para limpar dados existentes da tabela.

Não

Sem valor padrão

postSql

A instrução SQL a ser executada após a execução da tarefa de sincronização. Por exemplo, defina esse parâmetro como a instrução SQL usada para adicionar um carimbo de data/hora. Execute apenas uma instrução SQL na interface sem código e várias instruções SQL no editor de código.

Não

Sem valor padrão

maxBatchRows

O número máximo de linhas que podem ser gravadas na tabela de destino por vez. Este parâmetro e o parâmetro batchSize determinam juntos o número de registros de dados que podem ser gravados na tabela de destino por vez. Cada vez que os dados em cache atingem o valor de qualquer um dos parâmetros, o writer começa a gravar os dados na tabela de destino.

Não

500000

batchSize

A quantidade máxima de dados que podem ser gravados na tabela de destino por vez. Este parâmetro e o parâmetro maxBatchRows determinam juntos o número de registros de dados que podem ser gravados na tabela de destino por vez. Cada vez que os dados em cache atingem o valor de qualquer um dos parâmetros, o writer começa a gravar os dados na tabela de destino.

Não

104857600

maxRetries

O número máximo de tentativas permitidas após falha ao gravar vários registros de dados na tabela de destino por vez.

Não

3

labelPrefix

O prefixo de rótulo para cada lote de arquivos enviados. O rótulo final é uma combinação de labelPrefix + UUID para garantir que cada importação seja idempotente, evitando a duplicação de dados.

Não

datax_doris_writer_

loadProps

Os parâmetros de solicitação do StreamLoad, usados principalmente para configurar o formato de importação de dados. Por padrão, os dados são importados no formato CSV. Se o parâmetro loadProps não for configurado, o formato CSV padrão será usado, com \t como delimitador de coluna e \n como delimitador de linha. A configuração padrão é a seguinte:

"loadProps": {
    "format":"csv",
    "column_separator": "\t",
    "line_delimiter": "\n"
}

Para gravar dados no formato JSON, use as seguintes configurações:

"loadProps": {
    "format": "json"
}

Não

Sem valor padrão

Gravar dados de tipos de agregação

Use o Doris Writer para gravar dados em colunas de tipos de agregação específicos. Ao usar o Doris Writer para gravar dados em colunas de tipos de agregação específicos, configure os parâmetros adicionais.

Por exemplo, na seguinte tabela do Doris, uuid é do tipo bitmap (tipo de agregação) e sex é do tipo HLL (tipo de agregação).

CREATE TABLE `example_table_1` (
  `user_id` int(11) NULL,
  `date` varchar(10) NULL DEFAULT "10.5",
  `city` varchar(10) NULL,
  `uuid` bitmap BITMAP_UNION NULL, -- Aggregation type
  `sex` HLL HLL_UNION  -- Aggregation type
) ENGINE=OLAP AGGREGATE KEY(`user_id`, `date`,`city`)
COMMENT 'OLAP' DISTRIBUTED BY HASH(`user_id`) BUCKETS 32

Insira dados brutos na tabela:

user_id,date,city,uuid,sex
0,T0S4Pb,abc,43,'54'
1,T0S4Pd,fsd,34,'54'
2,T0S4Pb,fa3,53,'64'
4,T0S4Pb,fwe,87,'64'
5,T0S4Pb,gbr,90,'56'
2,iY3GiHkLF,234,100,'54'

Ao usar o Doris Writer para gravar dados em uma coluna de tipo de agregação, especifique a coluna em writer.parameter.column e configure uma função de agregação em writer.parameter.loadProps.columns. Por exemplo, use a função de agregação bitmap_hash para a coluna uuid e a função de agregação hll_hash para a coluna sex.

Código de exemplo:

{
    "stepType": "doris",// The plug-in name.
    "writer":
    {
        "parameter":
        {
            "column":
            [
                "user_id",
                "date",
                "city",
                "uuid",// The aggregation type is bitmap.
                "sex"// The aggregation type is HLL.
            ],
            "loadProps":
            {
                "format": "csv",
                "column_separator": "\\x01",
                "line_delimiter": "\\x02",
                "columns": "user_id,date,city,k1,uuid=bitmap_hash(k1),k2,sex=hll_hash(k2)"// You must specify the aggregate functions.
            },
            "postSql":
            [
                "select count(1) from example_tbl_3"
            ],
            "preSql":
            [],
            "datasource":"doris_datasource",// The name of the data source.
                    "table": "doris_table_name",// The name of the table.
        }
          "name": "Writer",
              "category": "writer"
    }
}