Todos os produtos
Search
Central de documentação

DataWorks:Fonte de dados Lindorm

Última atualização: Jun 27, 2026

O Data Integration do DataWorks oferece suporte a canais de dados bidirecionais para o Lindorm por meio dos plug-ins Lindorm Reader e Lindorm Writer. Este tópico descreve as capacidades de leitura e gravação de dados do Lindorm fornecidas pelo DataWorks.

Observações de uso

Nota

O Lindorm é um banco de dados multimodelo. Para mais detalhes, consulte a documentação do Lindorm. Atualmente, o DataWorks oferece suporte apenas ao mecanismo de tabela ampla e ao mecanismo de computação.

Tipos de coluna suportados

O Lindorm Reader e o Lindorm Writer aceitam a maioria dos tipos do Lindorm, mas alguns não têm suporte. Verifique seus tipos de dados com atenção.

A tabela a seguir lista como o Lindorm Reader e o Lindorm Writer mapeiam os tipos de dados do Lindorm.

Categoria

Tipos de dados

Inteiro

INT, LONG, SHORT

Ponto flutuante

DOUBLE, FLOAT, DOUBLE

String

STRING

Data e hora

DATE

Booleano

BOOLEAN

Binário

BINARYSTRING

Desenvolver uma tarefa de sincronização de dados

Para obter informações sobre o ponto de entrada e o procedimento de configuração de uma tarefa de sincronização, consulte os guias a seguir.

Sincronização em lote para uma única tabela

Sincronização em tempo real para uma única tabela

Sincronização em tempo real para um banco de dados inteiro

Apêndice: Exemplo de script e descrição de parâmetros

Configure uma tarefa de sincronização em lote usando o editor de código

Para configurar uma tarefa de sincronização em lote com o editor de código, defina os parâmetros relacionados no script conforme os requisitos unificados de formato. Para mais informações, consulte Configuração do modo Script. As informações a seguir descrevem os parâmetros necessários para as fontes de dados ao utilizar o editor de código em tarefas de sincronização em lote.

Exemplo de script do Reader

  • Configure um job que extrai dados de uma tabela SQL do mecanismo de tabela ampla do Lindorm para armazenamento 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 transmission speed in byte/s. DataX will try to reach this speed but not exceed it.
            "byte": 1048576
          }
          //Error limit
          "errorLimit": {
            //Upper limit of error records. An error is reported when exceeded.
            "record": 0,
            //Upper limit of error record percentage. 1.0 means 100%, 0.02 means 2%
            "percentage": 0.02
          }
        },
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
    }
  • Configure um job que extrai dados de uma tabela HBaseLike (WideColumn) do mecanismo de tabela ampla do Lindorm para armazenamento 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 transmission speed in byte/s. DataX will try to reach this speed but not exceed it.
            "byte": 1048576
          }
            //Error limit
            "errorLimit": {
            //Upper limit of error records. An error is reported when exceeded.
            "record": 0,
            //Upper limit of error record percentage. 1.0 means 100%, 0.02 means 2%.
            "percentage": 0.02
          }
        },
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
    }
  • Configure um job que extrai dados de uma tabela do mecanismo de computação para armazenamento 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 transmission speed in byte/s. DataX will try to reach this speed but not exceed it.
            "byte": 1048576
          }
            //Error limit
            "errorLimit": {
            //Upper limit of error records. An error is reported when exceeded.
            "record": 0,
            //Upper limit of error record percentage. 1.0 means 100%, 0.02 means 2%.
            "percentage": 0.02
          }
        },
        "order": {
            "hops": [
                {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
    }

Parâmetros do script do Reader

Parâmetro

Descrição

Obrigatório

Valor padrão

mode

Específico do mecanismo de tabela ampla. Define o modo de leitura de dados: modo de coluna fixa FixedColumn ou modo de coluna dinâmica DynamicColumn.

Sim

FixedColumn

tableMode

Específico do mecanismo de tabela ampla. Oferece suporte ao modo comum de tabela SQL table e ao modo de coluna ampla wideColumn. O padrão é table. Deixe este campo em branco se usar o modo table.

Não

Em branco por padrão

table

A tabela do Lindorm a ser lida. Os nomes das tabelas do Lindorm diferenciam maiúsculas de minúsculas.

Sim

Nenhum

encoding

Específico do mecanismo de tabela ampla. Formato de codificação: UTF-8 ou GBK. Geralmente usado para converter valores byte[] do Lindorm armazenados em formato binário para String.

Não

UTF-8

caching

Específico do mecanismo de tabela ampla. Número de registros buscados em um único lote. Esse valor reduz significativamente o número de idas e vindas na rede entre o sistema de sincronização de dados e o Lindorm, melhorando o throughput geral. Definir um valor muito alto pode sobrecarregar o servidor Lindorm ou causar erros OOM no processo de sincronização de dados.

Não

100

selects

Específico do mecanismo de tabela ampla. O tipo Table atual não oferece suporte à divisão automática de shards e executa com uma única concorrência por padrão. Portanto, configure manualmente o parâmetro selects para fragmentar os dados. Exemplo:

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))"
    ],

Limites:

  • Apenas colunas de chave primária e colunas de índice podem ser usadas como condições de consulta. Usar uma coluna comum como condição de consulta aciona uma varredura completa da tabela e afeta a estabilidade do cluster de origem.

  • Quando uma tabela possui várias colunas de chave primária, as condições de consulta devem seguir a regra de correspondência mais à esquerda na chave primária: as n-1 colunas de chave primária mais à esquerda devem usar condições de igualdade. Exemplo: Suponha que uma tabela tenha chaves primárias [id, order_time] e colunas comuns [type, data], e que um índice secundário tenha sido criado na coluna type.

    • Exemplos de sintaxe recomendada:

      Sintaxe SQL

      Sintaxe do plug-in

      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\"))
    • Exemplos de sintaxe não recomendada:

      Sintaxe SQL

      Sintaxe do plug-in

      Motivo para não recomendar

      where order_time >= 1234567 and order_time < 5678910

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

      A coluna de chave primária mais à esquerda id está ausente.

      where id > 1 and order_time > 1234567

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

      A coluna de chave primária mais à esquerda id não usa uma condição de igualdade.

      where data > 'xxx'

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

      A coluna data não é uma coluna de chave primária.

Não

Nenhum

session

Específico do mecanismo de computação. Parâmetros de job no nível de sessão, por exemplo, set hive.execution.engine=tez.

Não

Nenhum

splitPk

Específico do mecanismo de computação. Chave de divisão usada apenas ao ler tabelas do mecanismo de computação. Se você especificar splitPk, a coluna representada será usada para fragmentar os dados, e a sincronização iniciará tarefas simultâneas para melhorar a eficiência.

  • Se splitPk não for fornecido ou estiver vazio, a sincronização de dados usará um único canal para sincronizar a tabela.

  • Atualmente, splitPk oferece suporte apenas a colunas inteiras para divisão e não aceita strings, números de ponto flutuante, datas ou outros tipos.

Não

Nenhum

columns

Lista de colunas a serem lidas. Há suporte para poda e reordenação de colunas. A poda permite exportar apenas colunas selecionadas; a reordenação permite exportar colunas em uma ordem diferente do esquema da tabela.

  • Para tabelas do tipo table, especifique apenas os nomes das colunas. O esquema é obtido automaticamente dos metadados da tabela. Exemplo:

    [
        "id",
        "name",
        "age",
        "birthday",
        "gender"
    ]
  • Para tabelas do tipo HBaseLike (widecolumn). Exemplo:

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

Sim

Nenhum

Exemplo de script do Writer

  • Configure um job que grava dados de uma source MySQL em uma tabela SQL do mecanismo de tabela ampla do Lindorm.

    {
      "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 transmission speed in byte/s. DataX will try to reach this speed but not exceed it.
          "byte": 1048576
        },
        //Error limit
        "errorLimit": {
          //Upper limit of error records. An error is reported when exceeded.
          "record": 0,
          //Upper limit of error record percentage. 1.0 means 100%, 0.02 means 2%.
          "percentage": 0.02
        }
      },
      "order": {
        "hops": [
          {
            "from": "Reader",
            "to": "Writer"
          }
        ]
      }
    }
  • Configure um job que grava dados de uma source MySQL em uma tabela HBaseLike (WideColumn) do mecanismo de tabela ampla do Lindorm.

    {
        "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": [  //Mapped from the source in field order
                      "ROW|STRING", //Row key, fixed configuration. Maps the first field of the source to the row key. For example, in this sample, id is mapped to the row key.
                      "cf:name|STRING" //cf indicates the column family name and can be modified. name indicates the destination column name and can be modified.
                ]
                },
                "name":"Writer",
                "category":"writer"
            }
        ],
        "setting": {
            "jvmOption": "",
                    "errorLimit": {
                            "record": "0"
                    },
                    "speed": {
                        "concurrent": 3,
                        "throttle": false
                    }
        },
        "order": {
                "hops": [
                   {
                    "from": "Reader",
                    "to": "Writer"
                }
            ]
        }
      }
  • Configure um job que grava dados de uma source MySQL em uma tabela do mecanismo de computação.

    {
        "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 do script do Writer

Parâmetro

Descrição

Obrigatório

Valor padrão

table

Tabela do Lindorm onde os dados serão gravados. Os nomes das tabelas do Lindorm diferenciam maiúsculas de minúsculas.

Sim

Nenhum

encoding

Específico do mecanismo de tabela ampla. Formato de codificação: UTF-8 ou GBK. Geralmente usado para converter valores byte[] do Lindorm armazenados em formato binário para String.

Não

UTF-8

columns

Lista de colunas a serem gravadas. Há suporte para poda e reordenação de colunas. A poda permite exportar apenas colunas selecionadas; a reordenação permite exportar colunas em uma ordem diferente do esquema da tabela.

  • Para tabelas do tipo table, especifique apenas os nomes das colunas. O esquema é obtido automaticamente dos metadados da tabela.

  • Para tabelas do tipo widecolumn ou table.

Sim

Nenhum

nullMode

Específico do mecanismo de tabela ampla. Define como o Lindorm Writer trata valores nulos lidos da origem. Configure o parâmetro nullMode com diferentes valores para controlar o comportamento.

  • SKIP: Não grava a coluna no Lindorm.

  • EMPTY_BYTES: Grava um array de bytes vazio no campo correspondente no Lindorm quando o campo de origem é nulo.

  • NULL: Grava um valor nulo.

  • DELETE: Exclua o campo correspondente no Lindorm quando o campo de origem é nulo.

Não

EMPTY_BYTES

formatType

Específico do mecanismo de computação. Formato da tabela de destino. Valores válidos:

  • iceberg

  • parquet

  • orc

Não

Nenhum