Todos os produtos
Search
Central de documentação

DataWorks:Fonte de dados do Lindorm

Última atualização: Oct 20, 2026

O Data Integration do DataWorks oferece suporte à transferência bidirecional de dados por meio dos plug-ins Lindorm Reader e Lindorm Writer. Este tópico descreve como o DataWorks lê dados do Lindorm e grava dados nele.

{
    "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"
            }
        ]
    }
  }

Escopo

  • O mecanismo de wide table oferece suporte a {{XREF_0}} e {{XREF_1}}.

  • O mecanismo de computação oferece suporte apenas a {{XREF_2}}.

Nota

O Lindorm é um banco de dados multimodal. Para mais informações, consulte {{XREF_3}}. Atualmente, o DataWorks oferece suporte apenas ao wide table engine e ao mecanismo de computação.

Tipos de campo suportados

O Lindorm Reader e o Lindorm Writer suportam a maioria dos tipos de dados do Lindorm, mas alguns tipos não são suportados. Verifique seus tipos de dados antes do uso.

A tabela a seguir lista os mapeamentos de tipos do Lindorm para o Lindorm Reader e o Lindorm Writer.

Categoria de tipo

Tipo de dado

Inteiro

INT, LONG, SHORT

Ponto flutuante

DOUBLE, FLOAT, DOUBLE

String

STRING

Data e hora

DATE

Booleano

BOOLEAN

Binário

BINARYSTRING

{
    "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"
            }
        ]
    }
  }

Desenvolvimento de tarefas 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 seguintes guias de configuração.

Sincronização em lote de tabela única

  • Fontes de dados suportadas: Todos os tipos de fonte suportados pelo módulo Data Integration

  • Guia de configuração: {{XREF_4}}

    Para todos os parâmetros do modo de script e scripts de exemplo, consulte {{XREF_5}} .

Sincronização em tempo real de tabela única

  • Fontes de dados suportadas: Kafka, LogHub e Hologres

  • Guia de configuração: {{XREF_6}}

Sincronização em tempo real de banco de dados completo

  • Fonte de dados suportada: PostgreSQL

  • Guia de configuração: {{XREF_7}}

Apêndice: Scripts de exemplo e parâmetros

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

Para configurar uma tarefa de sincronização em lote usando o editor de código, configure os parâmetros relacionados no script com base nos requisitos de formato de script unificado. Para mais informações, consulte {{XREF_8}}. As informações a seguir descrevem os parâmetros que você deve configurar para as fontes de dados ao configurar uma tarefa de sincronização em lote usando o editor de código.

Scripts de exemplo do Reader

  • Configure um job que extraia dados de uma Lindorm SQL Table no wide table engine para o armazenamento local.

    {
        "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"
                }
            ]
        }
      }
  • Configure um job que extraia dados de uma tabela Lindorm HBaseLike (WideColumn) no wide table engine para o armazenamento local.

    {
        "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"
                }
            ]
        }
      }
  • Configure um job que extraia dados de uma tabela do mecanismo de computação para o armazenamento local.

    {
        "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 Reader

Parâmetro

Descrição

Obrigatório

Valor padrão

mode

Específico do wide table engine. Especifique o modo de leitura de dados: modo de coluna fixa FixedColumn ou modo de coluna dinâmica DynamicColumn.

Sim

FixedColumn

tableMode

Específico do wide table engine. Especifique o modo SQL de tabela padrão table ou o modo de coluna larga wideColumn. O padrão é table. Caso selecione o modo table, deixe este parâmetro vazio.

Não

Vazio por padrão

table

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

Sim

Nenhum

encoding

Específico do wide table engine. O formato de codificação, UTF-8 ou GBK. Geralmente usado para converter o tipo byte[] do Lindorm armazenado como dados binários para String.

Não

UTF-8

caching

Específico do wide table engine. O número de registros recuperados em cada lote. Isso pode reduzir significativamente as interações de rede entre o sistema de sincronização de dados e o Lindorm, além de aumentar o throughput geral. Um valor excessivamente grande pode sobrecarregar o servidor Lindorm ou causar um erro de falta de memória (OOM) no processo de sincronização.

Não

100

selects

Específico do wide table engine. Atualmente, os dados do tipo tabela não suportam a divisão automática de shard e são executados com uma tarefa simultânea por padrão. Portanto, configure selects para dividir os dados manualmente. 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 indexadas podem ser usadas nas condições de consulta. Condições em colunas regulares acionam uma varredura de tabela completa e afetam 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 do prefixo mais à esquerda: as primeiras n-1 colunas consecutivas de chave primária devem usar condições de igualdade. Por exemplo, suponha que a tabela tenha a chave primária [id, order_time], colunas regulares [type, data] e um índice secundário na coluna type.

    • Exemplos de sintaxe recomendados:

      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 recomendados:

      Sintaxe SQL

      Sintaxe do plug-in

      Motivo

      where order_time >= 1234567 and order_time < 5678910

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

      Falta a coluna de chave primária mais à esquerda id.

      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\"))

      O campo 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, como set hive.execution.engine=tez.

Não

Nenhum

splitPk

Específico do mecanismo de computação. A chave de divisão para leitura de uma tabela do mecanismo de computação. Se especificado, o splitPk identifica o campo usado para dividir os dados, e a sincronização de dados inicia tarefas simultâneas para melhorar a eficiência.

  • Se o splitPk não for especificado, incluindo quando o splitPk estiver ausente ou vazio, a sincronização de dados lerá a tabela em um único canal.

  • Atualmente, o splitPk suporta divisão apenas em dados inteiros, não em strings, números de ponto flutuante, datas ou outros tipos.

Não

Nenhum

columns

A lista de campos a serem lidos. Selecione um subconjunto de colunas e reordene-as. A seleção de colunas exporta apenas as colunas selecionadas; a reordenação exporta as colunas em uma ordem diferente do esquema da tabela.

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

    [
        "id",
        "name",
        "age",
        "birthday",
        "gender"
    ]
  • Para uma tabela HBaseLike (widecolumn), use o seguinte formato:

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

Sim

Nenhum

Scripts de exemplo do Writer

  • Configure um job que grave dados do MySQL em uma Lindorm SQL Table no wide table engine.

    {
        "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"
                }
            ]
        }
      }
  • Configure um job que grave dados do MySQL em uma tabela Lindorm HBaseLike (WideColumn) no wide table engine.

    {
        "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"
                }
            ]
        }
      }
  • Configure um job que grave dados do 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

O nome da 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 wide table engine. O formato de codificação, UTF-8 ou GBK. Geralmente usado para converter o tipo byte[] do Lindorm armazenado como dados binários para String.

Não

UTF-8

columns

A lista de campos a serem gravados. Selecione um subconjunto de colunas e reordene-as. A seleção de colunas exporta apenas as colunas selecionadas; a reordenação exporta as colunas em uma ordem diferente do esquema da tabela.

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

  • Para uma tabela do tipo widecolumn ou table.

Sim

Nenhum

nullMode

Específico do wide table engine. Quando um valor lido da origem for nulo, defina o parâmetro nullMode do Lindorm Writer e especifique como lidar com ele.

  • SKIP: Não grave esta coluna no Lindorm.

  • EMPTY_BYTES: Se o valor do campo for nulo, grave um array de bytes vazio no campo correspondente do Lindorm.

  • NULL: Grave um valor nulo.

  • DELETE: Se o valor do campo for nulo, exclua o campo correspondente do Lindorm.

Não

EMPTY_BYTES

formatType

Específico do mecanismo de computação. Especifique o tipo da tabela a ser sincronizada. Valores válidos:

  • iceberg

  • parquet

  • orc

Não

Nenhum