Todos los productos
Search
Centro de documentos

DataWorks:Origen de datos Lindorm

Última actualización: Oct 09, 2026

Data Integration de DataWorks admite la transferencia bidireccional de datos mediante los complementos Lindorm Reader y Lindorm Writer. En este tema se describe cómo DataWorks lee y escribe datos en Lindorm.

Alcance

Nota

Lindorm es una base de datos multimodal. Para obtener más información, consulte Lindorm documentation. Actualmente, DataWorks solo es compatible con el motor de tabla ancha y el motor de cómputo.

Tipos de campo compatibles

Lindorm Reader y Lindorm Writer admiten la mayoría de los tipos de datos de Lindorm, aunque algunos no son compatibles. Compruebe sus tipos de datos antes de usarlos.

A continuación se muestra una tabla que lista las asignaciones de tipos de Lindorm para Lindorm Reader y Lindorm Writer.

Categoría de tipo

Tipo de dato

Entero

INT、LONG、SHORT

Punto flotante

DOUBLE、FLOAT、DOUBLE

Cadena

STRING

Fecha y hora

DATE

Booleano

BOOLEAN

Binario

BINARYSTRING

Desarrollo de tareas de sincronización de datos

Para conocer el punto de entrada y el procedimiento para configurar una tarea de sincronización, consulte a continuación guías de configuración.

Sincronización por lotes de una sola tabla

Sincronización en tiempo real de una sola tabla

Sincronización en tiempo real de toda la base de datos

Apéndice: scripts de ejemplo y parámetros

Configurar una tarea de sincronización por lotes con el editor de código

Si desea configurar una tarea de sincronización por lotes con el editor de código, debe establecer los parámetros correspondientes en el script según los requisitos unificados de formato. Para obtener más información, consulte Script mode configuration. A continuación se describen los parámetros que debe configurar para los orígenes de datos cuando utiliza el editor de código en una tarea de sincronización por lotes.

Scripts de ejemplo de Reader

  • Configure un trabajo que extraiga datos de una tabla SQL de Lindorm en el motor de tabla ancha hacia el almacenamiento local.

    {
        "type": "job",
        "version": "2.0",
        "steps": [
            {
                "stepType": "lindorm",
                "parameter": {
                    "mode": "FixedColumn",
                    "caching": 128,
                    "column": [
                       "id",
                      "value" 
                    ],
                    "envType": 1,
                    "datasource": "lindorm",
                    "tableMode": "tableService",
                    "table": "lindorm_table"
                },
                "name": "lindormreader",
                "category": "reader"
            },
            {
                "stepType": "mysql",
                "parameter": {
                    "postSql": [],
                    "datasource": "lindorm",
                    "session": [],
                    "envType": 1,
                    "column": [
                        "id",
                        "value" 
                    ],
                    "socketTimeout": 3600000,
                    "writeMode": "insert",
                    "batchSize": 1024,
                    "encoding": "UTF-8",
                    "table": "",
                    "preSql": []
                },
                "name": "Writer",
                "category": "writer"
            }
        ],
        "setting": {
            "jvmOption": "",
            "executeMode": null,
            "errorLimit": {
                "record": "0"
            },
            "speed": {
            //Set the transfer speed in bytes per second. DataX tries to reach this speed without exceeding it.
            "byte": 1048576
          }
          //Error limits
          "errorLimit": {
            //Maximum number of error records. The job fails when this limit is exceeded.
            "record": 0,
            //Maximum percentage of error records. 1.0 means 100%, and 0.02 means 2%
            "percentage": 0.02
          }
        },
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
    }
  • Configure un trabajo que extraiga datos de una tabla HBaseLike (WideColumn) de Lindorm en el motor de tabla ancha hacia el almacenamiento local.

    {
        "type": "job",
        "version": "2.0",
        "steps": [
            {
                "stepType": "lindorm",
                "parameter": {
                    "mode": "FixedColumn",
                    "column":  [
                         "STRING|rowkey",
                          "INT|f:a"
                    ],
                    "envType": 1,
                    "datasource": "lindorm",
                    "tableMode": "wideColumn",
                    "table":"lindorm_table"
                },
                "name": "lindormreader",
                "category": "reader"
            },
            {
                "stepType": "mysql",
                "parameter": {
                    "postSql": [],
                    "datasource": "_IDB.TAOBAO",
                    "session": [],
                    "envType": 1,
                    "column": [
                        "id",
                        "value"
                    ],
                    "socketTimeout": 3600000,
                    "guid": "",
                    "writeMode": "insert",
                    "batchSize": 1024,
                    "encoding": "UTF-8",
                    "table": "",
                    "preSql": []
                },
                "name": "Writer",
                "category": "writer"
            }
        ],
        "setting": {
            "jvmOption": "",
            "executeMode": null,
            "errorLimit": {
                "record": "0"
            },
            "speed": {
            //Set the transfer speed in bytes per second. DataX tries to reach this speed without exceeding it.
            "byte": 1048576
          }
            //Error limits
            "errorLimit": {
            //Maximum number of error records. The job fails when this limit is exceeded.
            "record": 0,
            //Maximum percentage of error records. 1.0 means 100%, and 0.02 means 2%。
            "percentage": 0.02
          }
        },
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
    }
  • Configure un trabajo que extraiga datos de una tabla del motor de cómputo hacia el almacenamiento local.

    {
        "type": "job",
        "version": "2.0",
        "steps": [
            {
                "stepType": "lindorm",
                "parameter": {
                   "datasource": "lindorm_datasource",
                    "column": [
                       "id",
                       "value"
                    ],
                    "tableComment": "",
                    "where": "",
                    "session": [],
                    "splitPk": "id",
                    "table": "auto_ob_149912212480"
                },
                "name": "lindormreader",
                "category": "reader"
            },
            {
                "stepType": "mysql",
                "parameter": {
                    "postSql": [],
                    "datasource": "_IDB.TAOBAO",
                    "session": [],
                    "envType": 1,
                    "column": [
                        "id",
                        "value"
                    ],
                    "socketTimeout": 3600000,
                    "guid": "",
                    "writeMode": "insert",
                    "batchSize": 1024,
                    "encoding": "UTF-8",
                    "table": "",
                    "preSql": []
                },
                "name": "Writer",
                "category": "writer"
            }
        ],
        "setting": {
            "jvmOption": "",
            "executeMode": null,
            "errorLimit": {
                "record": "0"
            },
            "speed": {
            //Set the transfer speed in bytes per second. DataX tries to reach this speed without exceeding it.
            "byte": 1048576
          }
            //Error limits
            "errorLimit": {
            //Maximum number of error records. The job fails when this limit is exceeded.
            "record": 0,
            //Maximum percentage of error records. 1.0 means 100%, and 0.02 means 2%。
            "percentage": 0.02
          }
        },
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
    }

Parámetros del script de Reader

Parámetro

Descripción

Obligatorio

Valor predeterminado

mode

Específico del motor de tabla ancha. Especifica el modo de lectura de datos: modo de columna fija FixedColumn o modo de columna dinámica DynamicColumn.

Sí

FixedColumn

tableMode

Específico del motor de tabla ancha. Indica si se usa el modo SQL de tabla estándar table o el modo de columna ancha wideColumn. El valor predeterminado es table. Si selecciona el modo table, puede dejar este parámetro vacío.

No

Vacío de forma predeterminada

table

Nombre de la tabla de Lindorm que se va a leer. Los nombres de las tablas de Lindorm distinguen entre mayúsculas y minúsculas.

Sí

Ninguna

encoding

Específico del motor de tabla ancha. Formato de codificación, UTF-8 o GBK. Se suele utilizar para convertir el tipo byte[] de Lindorm, almacenado como datos binarios, a String.

No

UTF-8

caching

Específico del motor de tabla ancha. Número de registros recuperados en cada lote. Este valor reduce considerablemente las interacciones de red entre el sistema de sincronización de datos y Lindorm, lo que aumenta el rendimiento general. Un valor demasiado alto puede sobrecargar el servidor de Lindorm o provocar un error de memoria insuficiente (OOM) en el proceso de sincronización.

No

100

selects

Específico del motor de tabla ancha. Actualmente, los datos de tipo tabla no admiten la división automática de fragmentos y se ejecutan con una tarea concurrente de forma predeterminada. Por lo tanto, configure selects para dividir los datos manualmente. Por ejemplo:

selects": [
    "where(compare(\"id\", LESS, 5))",
    "where(and(compare(\"id\", GREATER_OR_EQUAL, 5), compare(\"id\", LESS, 10)))",
    "where(compare(\"id\", GREATER_OR_EQUAL, 10))"
    ],

Límites:

  • Solo se permiten columnas de clave primaria y columnas indexadas en las condiciones de consulta. Las condiciones sobre columnas normales desencadenan un escaneo completo de la tabla y afectan la estabilidad del clúster de origen.

  • Cuando una tabla tiene varias columnas de clave primaria, las condiciones de consulta deben seguir la regla del prefijo más a la izquierda: las primeras n-1 columnas consecutivas de clave primaria deben usar condiciones de igualdad. Por ejemplo, suponga que la tabla tiene la clave primaria [id, order_time], las columnas normales [type, data] y un índice secundario en la columna type.

    • Ejemplos de sintaxis recomendados:

      Sintaxis SQL

      Sintaxis del complemento

      where id >= 1 and id < 100

      where(and(compare(\"id\", GREATER_OR_EQUAL, 1), compare(\"id\", LESS, 100)))

      where id = 1 and order_time > 1234567

      where(and(compare(\"id\", EQUAL, 1), compare(\"order_time\", GREATER, 1234567)))

      where type = 'pay'

      where(compare(\"type\", EQUAL, \"pay\"))
    • Ejemplos de sintaxis no recomendados:

      Sintaxis SQL

      Sintaxis del complemento

      Motivo

      where order_time >= 1234567 and order_time < 5678910

      where(and(compare(\"order_time\", GREATER_OR_EQUAL, 1234567), compare(\"order_time\", LESS, 5678910)))

      Falta la columna de clave primaria más a la izquierda id.

      where id > 1 and order_time > 1234567

      where(and(compare(\"id\", GREATER, 1), compare(\"order_time\", GREATER, 1234567)))

      La columna de clave primaria más a la izquierda id no usa una condición de igualdad.

      where data > 'xxx'

      where(compare(\"data\", GREATER, \"xxx\"))

      El campo data no es una columna de clave primaria.

No

Ninguna

session

Específico del motor de cómputo. Parámetros de trabajo de sesión, como set hive.execution.engine=tez.

No

Ninguna

splitPk

Específico del motor de cómputo. Clave de división para leer una tabla del motor de cómputo. Si se especifica, splitPk identifica el campo utilizado para dividir los datos y la sincronización inicia tareas concurrentes para mejorar la eficiencia.

  • Si no se especifica splitPk, ya sea porque está ausente o vacío, la sincronización de datos lee la tabla a través de un único canal.

  • Actualmente, splitPk solo admite la división de datos enteros, no de cadenas, números de punto flotante, fechas u otros tipos.

No

Ninguna

columns

Lista de campos que se van a leer. Puede seleccionar un subconjunto de columnas y reordenarlas. La selección de columnas exporta únicamente las elegidas, mientras que el reordenamiento las exporta en un orden distinto al del esquema de la tabla.

  • Para una tabla de tipo table, introduzca solo los nombres de las columnas. El esquema se obtiene automáticamente de los metadatos de la tabla. Por ejemplo:

    [
        "id",
        "name",
        "age",
        "birthday",
        "gender"
    ]
  • Para una tabla HBaseLike (widecolumn), utilice a continuación formato:

    [
            "STRING|rowkey",
            "INT|f:a",
            "DOUBLE|f:b"
        ]

Sí

Ninguna

Scripts de ejemplo de Writer

  • Configure un trabajo que escriba datos de MySQL en una tabla SQL de Lindorm dentro del motor de tabla ancha.

    {
      "type": "job",
      "version": "2.0",
      "steps": [
        {
          "stepType": "mysql",
          "parameter": {
            "checkSlave": true,
            "datasource": " ",
            "envType": 1,
            "column": [
              "id",
              "value"
            ],
            "socketTimeout": 3600000,
            "masterSlave": "slave",
            "connection": [
              {
                "datasource": " ",
                "table": []
              }
            ],
            "where": "",
            "splitPk": "",
            "encoding": "UTF-8",
            "print": true
          },
          "name": "mysqlReader",
          "category": "reader"
        },
        {
          "stepType": "lindorm",
          "parameter": {
            "nullMode": "skip",
            "datasource": "lindorm_datasource",
            "envType": 1,
            "column": [
              "id",
              "value"
            ],
            "dynamicColumn": "false",
            "table": "lindorm_table",
            "encoding": "utf8"
          },
          "name": "Writer",
          "category": "writer"
        }
      ],
      "setting": {
        "jvmOption": "",
        "executeMode": null,
        "speed": {
          //Set the transfer speed in bytes per second. DataX tries to reach this speed without exceeding it.
          "byte": 1048576
        },
        //Error limits
        "errorLimit": {
          //Maximum number of error records. The job fails when this limit is exceeded.
          "record": 0,
          //Maximum percentage of error records. 1.0 means 100%, and 0.02 means 2%。
          "percentage": 0.02
        }
      },
      "order": {
        "hops": [
          {
            "from": "Reader",
            "to": "Writer"
          }
        ]
      }
    }
  • Configure un trabajo que escriba datos de MySQL en una tabla HBaseLike (WideColumn) de Lindorm dentro del motor de tabla ancha.

    {
        "type": "job",
        "version": "2.0",
        "steps": [
            {
                "stepType": "mysql",
                "parameter": {
                    "envType": 0,
                    "datasource": " ",
                    "column": [
                         "id",
                         "value"
                    ],
                    "connection": [
                        {
                            "datasource": " ",
                            "table": []
                        }
                    ],
                    "where": "",
                    "splitPk": "",
                    "encoding": "UTF-8"
                },
                "name": "Reader",
                "category": "reader"
    
            },
          {
              "stepType": "lindorm",
              "parameter": {
                "datasource": "lindorm_datasource",
                "table": "xxxxxx",
                "encoding": "utf8",
                "nullMode": "skip",
                "dynamicColumn": "false",
                "caching": 128,
                "column": [  //Map source fields in field order
                      "ROW|STRING", //Row key. This fixed configuration maps the first source field to the row key, such as id in this example.
                      "cf:name|STRING" //cf is the editable column family name; name is the editable destination column name
                ]
                },
                "name":"Writer",
                "category":"writer"
            }
        ],
        "setting": {
            "jvmOption": "",
                    "errorLimit": {
                            "record": "0"
                    },
                    "speed": {
                        "concurrent": 3,
                        "throttle": false
                    }
        },
        "order": {
                "hops": [
                   {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
      }
  • Configure un trabajo que escriba datos de MySQL en una tabla del motor de cómputo.

    {
        "type": "job",
        "version": "2.0",
        "steps": [
            {
                "stepType": "mysql",
                "parameter": {
                    "envType": 0,
                    "datasource": " ",
                    "column": [
                         "id",
                         "value"
                    ],
                    "connection": [
                        {
                            "datasource": " ",
                            "table": []
                        }
                    ],
                    "where": "",
                    "splitPk": "",
                    "encoding": "UTF-8"
                },
                "name": "Reader",
                "category": "reader"
    
            },
          {
              "stepType": "lindorm",
              "parameter": {
                  "datasource": "lindorm_datasource",
                  "table": "xxxxxx",
                  "column": [ 
                     "id",
                    "value"
                   ],
                  "formatType": "ICEBERG"
                },
                "name":"Writer",
                "category":"writer"
            }
        ],
        "setting": {
            "jvmOption": "",
                    "errorLimit": {
                            "record": "0"
                    },
                    "speed": {
                        "concurrent": 3,
                        "throttle": false
                    }
        },
        "order": {
                "hops": [
                   {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
      }

Parámetros del script de Writer

Parámetro

Descripción

Obligatorio

Valor predeterminado

table

Nombre de la tabla de Lindorm donde se escribirán los datos. Los nombres de las tablas de Lindorm distinguen entre mayúsculas y minúsculas.

Sí

Ninguna

encoding

Específico del motor de tabla ancha. Formato de codificación, UTF-8 o GBK. Se suele utilizar para convertir el tipo byte[] de Lindorm, almacenado como datos binarios, a String.

No

UTF-8

columns

Lista de campos que se van a escribir. Puede seleccionar un subconjunto de columnas y reordenarlas. La selección de columnas exporta únicamente las elegidas, mientras que el reordenamiento las exporta en un orden distinto al del esquema de la tabla.

  • Para una tabla de tipo table, introduzca solo los nombres de las columnas. El esquema se obtiene automáticamente de los metadatos de la tabla.

  • Para una tabla de tipo widecolumn o de tipo table.

Sí

Ninguna

nullMode

Específico del motor de tabla ancha. Cuando un valor leído del origen es nulo, establezca el parámetro nullMode de Lindorm Writer para indicar cómo procesarlo.

  • SKIP: no escribe esta columna en Lindorm.

  • EMPTY_BYTES: si el valor del campo es nulo, escribe una matriz de bytes vacía en el campo correspondiente de Lindorm.

  • NULL: escribe un valor nulo.

  • DELETE: si el valor del campo es nulo, elimina el campo correspondiente de Lindorm.

No

EMPTY_BYTES

formatType

Específico del motor de cómputo. Define el tipo de tabla que se va a sincronizar. Valores válidos:

  • iceberg

  • parquet

  • orc

No

Ninguna