Todos los productos
Search
Centro de documentos

DataWorks:Doris

Última actualización: Sep 09, 2026

Data Integration le permite usar Doris Reader para leer datos de Doris y usar Doris Writer para escribir datos de tabla en Doris. Este tema describe las capacidades de DataWorks Data Integration en la sincronización de datos de Doris.

Versiones de Doris compatibles

Doris Writer usa MySQL Driver 5.1.47. Las versiones del kernel compatibles con el controlador se muestran a continuación. Para obtener más información sobre las capacidades del controlador, consulte la documentación oficial de Doris.

Versión de Doris

Compatible

0.x.x

Sí

1.1.x

Sí

1.2.x

Sí

2.x

Sí

Restricciones de uso

Data Integration admite la sincronización sin conexión de datos de Doris (lectura sin conexión y escritura sin conexión).

Tipos de datos compatibles

Las distintas versiones de Doris admiten diferentes tipos de datos y modelos de agregación. Para obtener información sobre todos los tipos de datos compatibles en cada versión de Doris, consulte la documentación oficial de Doris. La tabla que aparece a continuación describe los principales tipos de datos compatibles.

Tipo de datos

Modelo compatible

Versión de Doris

Escritura sin conexión (Doris Writer)

SMALLINT

Aggregate,Unique,Duplicate

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

Sí

INT

Aggregate,Unique,Duplicate

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

Sí

BIGINT

Aggregate,Unique,Duplicate

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

Sí

LARGEINT

Aggregate,Unique,Duplicate

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

Sí

FLOAT

Aggregate,Unique,Duplicate

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

Sí

DOUBLE

Aggregate,Unique,Duplicate

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

Sí

DECIMAL

Aggregate,Unique,Duplicate

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

Sí

DECIMALV3

Aggregate,Unique,Duplicate

Versiones posteriores a 1.2.1, 2.x

Sí

DATE

Aggregate,Unique,Duplicate

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

Sí

DATETIME

Aggregate,Unique,Duplicate

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

Sí

DATEV2

Aggregate,Unique,Duplicate

1.2.x, 2.x

Sí

DATETIMEV2

Aggregate,Unique,Duplicate

1.2.x, 2.x

Sí

CHAR

Aggregate,Unique,Duplicate

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

Sí

VARCHAR

Aggregate,Unique,Duplicate

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

Sí

STRING

Aggregate,Unique,Duplicate

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

Sí

ARRAY

Duplicate

1.2.x, 2.x

Sí

JSON

Aggregate,Unique,Duplicate

1.2.x, 2.x

Sí

HLL

Aggregate

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

Sí

BITMAP

Aggregate

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

Sí

QUANTILE_STATE

Aggregate

1.2.x, 2.x

Sí

Funcionamiento

Doris Writer escribe datos mediante StreamLoad, que Doris admite de forma nativa. Doris Writer almacena en caché en memoria los datos que lee el lector, concatena los datos en texto y, a continuación, importa el texto a la base de datos de Doris en lotes. Para obtener más información, consulte la documentación oficial de Doris.

Prepare un entorno de ApsaraDB for OceanBase antes de sincronizar datos

Antes de usar DataWorks para sincronizar datos con un origen de datos de Doris, debe preparar un entorno de Doris. Esto garantiza que la tarea de sincronización de datos pueda configurarse y sincronizar datos con el origen de datos de Doris según lo esperado. La información que aparece a continuación describe cómo preparar un entorno de Doris para la sincronización de datos con un origen de datos de Doris.

Confirme la versión de Doris

Data Integration tiene requisitos sobre las versiones de Doris. Compruebe si la versión del clúster de Doris desde el que desea sincronizar datos cumple los requisitos según la sección Supported Doris versions. Descargue una versión específica desde el sitio web oficial de Doris e instálela.

Cree una cuenta y conceda permisos

Cree una cuenta que se utilizará para iniciar sesión en la base de datos de Doris en operaciones posteriores. Especifique una contraseña para la cuenta para las conexiones posteriores a la base de datos de Doris. Si desea usar el usuario root predeterminado de Doris para iniciar sesión en la base de datos de Doris, especifique una contraseña para el usuario root. De forma predeterminada, el usuario root no tiene contraseña. Ejecute una sentencia SQL en Doris para especificar la contraseña:

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

Configure la conexión de red para Doris

Para usar el método StreamLoad para escribir datos, debe acceder a la dirección IP privada de un nodo FE. Si accede a la dirección IP pública del nodo FE, se le redirige a la dirección IP privada de un nodo BE. Para obtener más información sobre la redirección, consulte Problemas de operaciones de datos. En este caso, debe establecer conexiones de red entre su origen de datos y un serverless resource group o un resource group exclusivo para Data Integration para que el resource group pueda acceder al origen de datos a través de una red interna. Para obtener más información sobre cómo establecer una conexión de red entre la base de datos de Doris y un resource group, consulte Network connectivity solutions.

Agregue un origen de datos

Antes de desarrollar una tarea de sincronización en DataWorks, agregue el origen de datos obligatorio a DataWorks siguiendo las instrucciones de Data source configuration. Consulte las descripciones de los parámetros en la consola de DataWorks para comprender el significado de los parámetros cuando agregue un origen de datos.

Tome nota de los requisitos de configuración de los elementos de configuración que se indican a continuación para el origen de datos de Doris:

  • JdbcUrl: Introduzca la cadena de conexión JDBC, que incluye la dirección IP, el número de puerto, la base de datos y los parámetros de conexión. Se admiten direcciones IP públicas y privadas. Si usa una dirección IP pública, asegúrese de que el resource group de Data Integration pueda acceder al host donde se encuentra la instancia de Doris.

  • FE endpoint: Introduzca las direcciones IP y los puertos de los nodos FE. Si su clúster tiene varios nodos FE, introduzca varios endpoints separados por comas, por ejemplo, ip1:port1,ip2:port2. Cuando pruebe la conexión, DataWorks prueba la conectividad con todos los FE endpoints especificados.

  • Username: Introduzca el nombre de usuario para acceder a la base de datos de Doris.

  • Password: Introduzca la contraseña correspondiente al nombre de usuario.

  • Advanced Parameters: El origen de datos de Doris admite varios parámetros avanzados que amplían la configuración de conexión. Por ejemplo, para ajustar el tiempo de espera de consulta de Java Database Connectivity (JDBC), agregue el parámetro queryTimeout a los parámetros avanzados. El valor se especifica en segundos y queryTimeout=600 establece el tiempo de espera en 600 segundos. Después de que establezca este parámetro, se anexa automáticamente a la cadena de conexión JDBC. queryTimeout solo tiene efecto en el origen de datos. No puede configurar queryTimeout por separado para un nodo de sincronización por lotes. Configúrelo de forma centralizada en el origen de datos.

Desarrolle una tarea de sincronización de datos

Para obtener información sobre el punto de entrada y el procedimiento para configurar una tarea de sincronización, consulte las guías de configuración que aparecen a continuación.

Anexo: Código y parámetros

Configure una tarea de sincronización por lotes mediante el editor de código

Si desea configurar una tarea de sincronización por lotes mediante el editor de código, configure los parámetros relacionados en el script según los requisitos de formato unificado de script. Para obtener más información, consulte Script mode configuration. La información que aparece a continuación describe los parámetros que debe configurar para los orígenes de datos cuando configure una tarea de sincronización por lotes mediante el editor de código.

Ejemplo de script de 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 del script de Reader

Parámetro

Descripción

Obligatorio

Valor predeterminado

datasource

El nombre del origen de datos. Debe ser igual al nombre del origen de datos agregado. Puede agregar orígenes de datos mediante el editor de código.

Sí

Sin valor predeterminado

table

El nombre de la tabla de la que desea leer datos. Cada tarea de sincronización se puede usar para sincronizar datos de una sola tabla.

Para una tabla fragmentada, puede usar el parámetro table para especificar las particiones de las que desea leer datos. Ejemplos:

  • Puede configurar un intervalo para leer datos de bases de datos y tablas fragmentadas. Por ejemplo, 'table_[0-99]' especifica que se leen datos de 'table_0', 'table_1' y 'table_2', hasta 'table_99'.

  • Si sus tablas tienen sufijos numéricos de la misma longitud, como 'table_000', 'table_001' y 'table_002', hasta 'table_999', puede configurar el parámetro como '"table": ["table_00[0-9]", "table_0[10-99]", "table_[100-999]"]'.

Nota

Doris Reader lee los datos de las columnas especificadas por el parámetro column en las particiones especificadas por el parámetro table. Si una partición o columna especificada no existe, la tarea de sincronización falla.

Sí

Sin valor predeterminado

column

Las columnas que desea sincronizar. Las columnas se describen en una matriz JSON. De forma predeterminada, se sincronizan todas las columnas. Por ejemplo, use ["*"].

  • Reducción de columnas: Seleccione un subconjunto de columnas para exportar.

  • El orden de las columnas puede cambiarse. Esto significa que puede especificar columnas en un orden distinto del especificado por el esquema de la tabla de origen.

  • Configuración de constantes: Debe seguir la sintaxis SQL de Doris. Ejemplo: ["id","table","1","'mingya.wmy'","'null'","to_char(a+1)","2.3","true"].

    • id: nombre de una columna.

    • table: nombre de una columna que contiene palabras clave reservadas.

    • 1: una constante entera.

    • 'mingya.wmy': una constante de cadena, encerrada entre comillas simples (').

    • null:

      • " " indica una cadena vacía.

      • null indica un valor nulo.

      • 'null' indica la cadena "null".

    • to_char(a+1): una expresión de función que se usa para calcular la longitud de una cadena.

    • 2.3: una constante de coma flotante.

    • true: un valor booleano.

  • El parámetro column debe especificar explícitamente todas las columnas de las que desea leer datos. Este parámetro no puede dejarse vacío.

Sí

Sin valor predeterminado

splitPk

Para mejorar el rendimiento de lectura, puede usar el parámetro splitPk para especificar una clave de fragmentación. Data Integration usa esta clave para particionar los datos y ejecutar tareas simultáneas.

  • Se recomienda que establezca el parámetro splitPk en el nombre de la columna de clave principal de la tabla. Los datos pueden distribuirse uniformemente entre diferentes fragmentos según la columna de clave principal, en lugar de concentrarse solo en fragmentos específicos.

  • El parámetro splitPk solo admite la fragmentación de datos de tipos de datos enteros. Si establece el parámetro splitPk en un campo de un tipo de datos no compatible, como cadena, coma flotante o fecha, se ignora la configuración de este parámetro y se usa un solo hilo para leer datos.

  • Si no se proporciona el parámetro splitPk o se deja vacío, se usa un solo hilo para leer datos.

No

Sin valor predeterminado

where

La condición de filtro. En muchos escenarios de negocio, quizá desee sincronizar solo los datos del día actual. Para ello, puede especificar la condición where como gmt_create > $bizdate.

  • Puede usar la cláusula WHERE para leer datos incrementales. Si no se proporciona el parámetro where o se deja vacío, Doris Reader lee todos los datos.

  • No establezca el parámetro where en limit 10. Este valor no cumple las restricciones de Doris sobre la cláusula SQL WHERE.

No

Sin valor predeterminado

querySql (parámetro avanzado, disponible solo en el editor de código)

En algunos escenarios de negocio, el parámetro where puede no ser suficiente para describir las condiciones de filtro deseadas. Puede usar este parámetro para especificar una consulta SQL personalizada para filtrar. Si configura este parámetro, Data Integration ignora los parámetros table, column, where y splitPk, y usa la consulta personalizada para recuperar datos. Por ejemplo, para unir varias tablas antes de la sincronización, puede usar una consulta como select a,b from table_a join table_b on table_a.id = table_b.id. El parámetro querySql tiene mayor prioridad que los parámetros table, column, where y splitPk. El parámetro datasource sigue siendo obligatorio para que el sistema recupere detalles de conexión, como el nombre de usuario y la contraseña.

Nota

El nombre del parámetro querySql distingue mayúsculas y minúsculas. Por ejemplo, querysql no surte efecto.

No

Sin valor predeterminado

Ejemplo de script de 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 del script de Writer

Parámetro

Descripción

Obligatorio

Valor predeterminado

datasource

El nombre del origen de datos. Debe ser igual al nombre del origen de datos agregado. Puede agregar orígenes de datos mediante el editor de código.

Sí

Sin valor predeterminado

table

El nombre de la tabla de la que desea leer datos.

Sí

Sin valor predeterminado

column

Las columnas de destino donde se escribirán los datos. Especifique los nombres de columna en una matriz, por ejemplo, "column":["id","name","age"]. Para escribir datos en todas las columnas en orden, use un asterisco () en la matriz, por ejemplo, "column":[""].

Sí

Sin valor predeterminado

preSql

Las sentencias SQL que se ejecutarán antes de que inicie la tarea de sincronización de datos. En la interfaz sin código, solo puede ejecutar una sentencia SQL. En el editor de código, puede ejecutar varias sentencias SQL. Por ejemplo, puede usar estas sentencias para limpiar los datos existentes de la tabla.

No

Sin valor predeterminado

postSql

La sentencia SQL que desea ejecutar después de que se ejecute la tarea de sincronización. Por ejemplo, puede establecer este parámetro en la sentencia SQL que se usa para agregar una marca de tiempo. Solo puede ejecutar una sentencia SQL en la interfaz sin código y varias sentencias SQL en el editor de código.

No

Sin valor predeterminado

maxBatchRows

El número máximo de filas que puede escribir en la tabla de destino cada vez. Tanto este parámetro como el parámetro batchSize determinan la cantidad de registros de datos que puede escribir en la tabla de destino cada vez. Cada vez que los datos almacenados en caché alcanzan el valor de cualquiera de los dos parámetros, el escritor comienza a escribir los datos en la tabla de destino.

No

500000

batchSize

La cantidad máxima de datos que puede escribir en la tabla de destino cada vez. Tanto este parámetro como el parámetro maxBatchRows determinan la cantidad de registros de datos que puede escribir en la tabla de destino cada vez. Cada vez que los datos almacenados en caché alcanzan el valor de cualquiera de los dos parámetros, el escritor comienza a escribir los datos en la tabla de destino.

No

104857600

maxRetries

El número máximo de reintentos permitidos después de una operación con errores al escribir varios registros de datos en la tabla de destino a la vez.

No

3

labelPrefix

El prefijo de etiqueta para cada lote de archivos cargados. La etiqueta final es una combinación de labelPrefix + UUID para garantizar que cada importación sea idempotente y evitar la duplicación de datos.

No

datax_doris_writer_

loadProps

Los parámetros de solicitud para StreamLoad, que se usan principalmente para configurar el formato de importación de datos. De forma predeterminada, los datos se importan en formato CSV. Si no se configura el parámetro loadProps, se usa el formato CSV predeterminado, con \t como delimitador de columnas y \n como delimitador de filas. La configuración predeterminada se muestra a continuación:

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

Si desea escribir datos en formato JSON, use la configuración que se muestra a continuación:

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

No

Sin valor predeterminado

Escriba datos de tipos agregados

Puede usar Doris Writer para escribir datos de tipos agregados, pero debe aplicar configuraciones adicionales en el editor de código.

Por ejemplo, en la tabla de Doris que se muestra a continuación, uuid es de tipo bitmap (tipo de agregación) y sex es de tipo HLL (tipo de agregación).

CREATE TABLE `example_table_1` (
  `user_id` int(11) NOT NULL,
  `date` varchar(10) NOT NULL,
  `city` varchar(10) NOT NULL,
  `uuid` bitmap BITMAP_UNION, -- 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

Los datos sin procesar que se sincronizarán constan de cinco columnas, como se muestra a continuación. Los valores de las columnas uuid y sex son valores sin procesar (números y cadenas comunes) en lugar de valores de tipo bitmap o HLL:

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'

Los valores sin procesar no pueden escribirse directamente en columnas bitmap o HLL. Los valores deben convertirse mediante funciones de agregación. El parámetro columns de Doris Stream Load puede completar la conversión. La regla de asignación es la siguiente: las columnas del archivo se asignan en secuencia a los nombres de columna que no contienen un signo igual (=) en columns, y las entradas que contienen un signo igual (=) son transformaciones de expresión (los valores de las columnas de destino se calculan a partir de las expresiones) y no ocupan posiciones de columna del archivo.

Por lo tanto, las asignaciones entre las columnas del archivo y las columnas de la tabla en este ejemplo se indican a continuación:

  • Las columnas 1 a 3 del archivo (user_id, date y city): se escriben directamente en las columnas de la tabla con los mismos nombres.

  • La columna 4 del archivo (el valor sin procesar de uuid): se asigna a la columna de marcador de posición temporal k1, se convierte en un bitmap mediante la expresión uuid=bitmap_hash(k1) y se escribe en la columna de tabla uuid.

  • La columna 5 del archivo (el valor sin procesar de sex): se asigna a la columna de marcador de posición temporal k2, se convierte en un valor HLL mediante la expresión sex=hll_hash(k2) y se escribe en la columna de tabla sex.

k1 y k2 son nombres de marcador de posición temporales que no se escriben en la tabla. Puede cambiar los nombres a cualquier otro nombre, siempre que los nombres referenciados en las expresiones coincidan con los nombres de las columnas de marcador de posición.

Cuando use Doris Writer para escribir datos de tipos agregados, especifique las columnas que se escribirán en writer.parameter.column y configure las reglas de conversión anteriores en writer.parameter.loadProps.columns. uuid y sex en writer.parameter.column son los nombres de los campos de valores sin procesar en los registros de sincronización. Solo determinan los campos que se escribirán y el orden de escritura. Un archivo CSV no contiene nombres de columna y Stream Load identifica las columnas por posición. Por lo tanto, puede usar nombres personalizados para las columnas cuarta y quinta en el parámetro columns (k1 y k2 en este ejemplo).

Código de ejemplo:

{
    "stepType": "doris",
    "parameter": {
        "datasource": "doris_datasource",
        "table": "example_table_1",
        "column": [
            "user_id",
            "date",
            "city",
            "uuid",
            "sex"
        ],
        "loadProps": {
            "format": "csv",
            "column_separator": "\\x01",
            "line_delimiter": "\\x02",
            "columns": "user_id,date,city,k1,uuid=bitmap_hash(k1),k2,sex=hll_hash(k2)"
        },
        "preSql": [],
        "postSql": []
    },
    "name": "Writer",
    "category": "writer"
}