Tous les produits
Search
Centre de documentation

DataWorks:Source de données Lindorm

Dernière mise à jour :Aug 10, 2026

Data Integration de DataWorks prend en charge des canaux de données bidirectionnels pour Lindorm via les plug-ins Lindorm Reader et Lindorm Writer. Cette rubrique décrit les capacités de lecture et d'écriture des données Lindorm fournies par DataWorks.

Remarques sur l'utilisation

Remarque

Lindorm est une base de données multimodèle. Pour plus de détails, consultez la documentation Lindorm. DataWorks ne prend actuellement en charge que le moteur de table large et le moteur de calcul.

Types de colonnes pris en charge

Lindorm Reader et Lindorm Writer prennent en charge la plupart des types Lindorm, à l'exception de quelques-uns. Vérifiez attentivement vos types de données.

Le tableau suivant indique comment Lindorm Reader et Lindorm Writer mappent les types de données Lindorm.

|
**Catégorie**
|
**Types de données**
| | --- | --- | |
Entier
|
INT, LONG, SHORT
| |
À virgule flottante
|
DOUBLE, FLOAT, DOUBLE
| |
Chaîne
|
STRING
| |
Date et heure
|
DATE
| |
Booléen
|
BOOLEAN
| |
Binaire
|
BINARYSTRING
|



























Développer une tâche de synchronisation des données

Pour connaître le point d'entrée et la procédure de configuration d'une tâche de synchronisation, consultez les guides de configuration suivants.

Synchronisation par lots pour une seule table

Synchronisation en temps réel pour une seule table

Synchronisation en temps réel pour une base de données entière

Annexe : Exemple de script et description des paramètres

Configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code

Pour configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code, vous devez définir les paramètres associés dans le script conformément aux exigences de format de script unifié. Pour plus d'informations, consultez la section Configuration en mode script. Les informations suivantes décrivent les paramètres à configurer pour les sources de données lors de la configuration d'une tâche de synchronisation par lots à l'aide de l'éditeur de code.

Exemple de script Reader

  • Configurez une tâche qui extrait les données d'une table SQL Lindorm du moteur de table large vers le stockage 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"
                }
            ]
        }
    }
  • Configurez une tâche qui extrait les données d'une table Lindorm HBaseLike (WideColumn) du moteur de table large vers le stockage 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"
                }
            ]
        }
    }
  • Configurez une tâche qui extrait les données d'une table du moteur de calcul vers le stockage 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"
                }
            ]
        }
    }

Paramètres du script Reader

Paramètre

Description

Obligatoire

Valeur par défaut

mode

Spécifique au moteur de table large. Spécifie le mode de lecture des données : mode colonne fixe FixedColumn ou mode colonne dynamique DynamicColumn.

Oui

FixedColumn

tableMode

Spécifique au moteur de table large. Prend en charge le mode table SQL standard table et le mode colonne large wideColumn. La valeur par défaut est table. Vous pouvez laisser ce champ vide si vous utilisez le mode table.

Non

Vide par défaut

table

La table Lindorm à lire. Les noms de tables Lindorm sont sensibles à la casse.

Oui

Aucune

encoding

Spécifique au moteur de table large. Le format d'encodage, soit UTF-8, soit GBK. Généralement utilisé pour convertir les valeurs byte[] de Lindorm stockées sous forme binaire en String.

Non

UTF-8

caching

Spécifique au moteur de table large. Le nombre d'enregistrements récupérés en un seul lot. Cette valeur réduit considérablement le nombre d'allers-retours réseau entre le système de synchronisation des données et Lindorm et améliore le débit global. Une valeur trop élevée peut surcharger le serveur Lindorm ou provoquer des erreurs OOM lors du processus de synchronisation des données.

Non

100

selects

Spécifique au moteur de table large. Le type de table actuel ne prend pas en charge le fractionnement automatique des shards et s'exécute avec une seule concurrence par défaut. Vous devez donc configurer manuellement le paramètre selects pour fragmenter les données. Par exemple :

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 :

  • Seules les colonnes de clé primaire et les colonnes d'index peuvent être utilisées comme conditions de requête. L'utilisation d'une colonne ordinaire comme condition de requête déclenche une analyse complète de la table et affecte la stabilité du cluster source.

  • Lorsqu'une table possède plusieurs colonnes de clé primaire, les conditions de requête doivent respecter la règle de correspondance la plus à gauche sur la clé primaire : les n-1 colonnes de clé primaire les plus à gauche doivent toutes utiliser des conditions d'égalité. Exemple : Supposons qu'une table ait des clés primaires [id, order_time] et des colonnes ordinaires [type, data], et qu'un index secondaire ait été créé sur la colonne type.

    • Exemples de syntaxe recommandés :

      Syntaxe SQL

      Syntaxe du 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\"))
    • Exemples de syntaxe non recommandés :

      Syntaxe SQL

      Syntaxe du plug-in

      Raison de la non-recommandation

      where order_time >= 1234567 and order_time < 5678910

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

      La colonne de clé primaire la plus à gauche id est manquante.

      where id > 1 and order_time > 1234567

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

      La colonne de clé primaire la plus à gauche id n'utilise pas de condition d'égalité.

      where data > 'xxx'

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

      La colonne de données n'est pas une colonne de clé primaire.

Non

Aucune

session

Spécifique au moteur de calcul. Paramètres de tâche au niveau de la session, par exemple, set hive.execution.engine=tez.

Non

Aucune

splitPk

Spécifique au moteur de calcul. La clé de fractionnement, utilisée uniquement lors de la lecture des tables du moteur de calcul. Si vous spécifiez splitPk, la colonne qu'elle représente est utilisée pour fragmenter les données, et la synchronisation des données démarre des tâches simultanées pour améliorer l'efficacité.

  • Si splitPk n'est pas fourni ou est vide, la synchronisation des données utilise un seul canal pour synchroniser la table.

  • Actuellement, splitPk prend uniquement en charge les colonnes entières pour le fractionnement et ne prend pas en charge les chaînes, les nombres à virgule flottante, les dates ou d'autres types.

Non

Aucune

columns

La liste des colonnes à lire. L'élagage des colonnes et le réordonnancement des colonnes sont pris en charge. L'élagage des colonnes vous permet d'exporter uniquement les colonnes sélectionnées ; le réordonnancement des colonnes vous permet d'exporter les colonnes dans un ordre différent du schéma de la table.

  • Pour les tables de type table, spécifiez uniquement les noms de colonnes. Le schéma est automatiquement obtenu à partir des métadonnées de la table. Exemple :

    [
        "id",
        "name",
        "age",
        "birthday",
        "gender"
    ]
  • Pour les tables de type HBaseLike (widecolumn). Exemple :

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

Oui

Aucune

Exemple de script Writer

  • Configurez une tâche qui écrit les données d'une source MySQL vers une table SQL Lindorm du moteur de table large.

    {
      "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"
          }
        ]
      }
    }
  • Configurez une tâche qui écrit les données d'une source MySQL vers une table Lindorm HBaseLike (WideColumn) du moteur de table large.

    {
        "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"
                }
            ]
        }
      }
  • Configurez une tâche qui écrit les données d'une source MySQL vers une table du moteur de calcul.

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

Paramètres du script Writer

Paramètre

Description

Obligatoire

Valeur par défaut

table

La table Lindorm vers laquelle écrire. Les noms de tables Lindorm sont sensibles à la casse.

Oui

Aucune

encoding

Spécifique au moteur de table large. Le format d'encodage, soit UTF-8, soit GBK. Généralement utilisé pour convertir les valeurs byte[] de Lindorm stockées sous forme binaire en String.

Non

UTF-8

columns

La liste des colonnes à écrire. L'élagage des colonnes et le réordonnancement des colonnes sont pris en charge. L'élagage des colonnes vous permet d'exporter uniquement les colonnes sélectionnées ; le réordonnancement des colonnes vous permet d'exporter les colonnes dans un ordre différent du schéma de la table.

  • Pour les tables de type table, spécifiez uniquement les noms de colonnes. Le schéma est automatiquement obtenu à partir des métadonnées de la table.

  • Pour les tables de type widecolumn ou table.

Oui

Aucune

nullMode

Spécifique au moteur de table large. Spécifie comment Lindorm Writer gère les valeurs nulles lues depuis la source. Configurez le paramètre nullMode avec différentes valeurs pour contrôler le comportement.

  • SKIP : N'écrit pas la colonne dans Lindorm.

  • EMPTY_BYTES : Écrit un tableau d'octets vide dans le champ correspondant dans Lindorm lorsque le champ source est nul.

  • NULL : Écrit une valeur nulle.

  • DELETE : Supprime le champ correspondant dans Lindorm lorsque le champ source est nul.

Non

EMPTY_BYTES

formatType

Spécifique au moteur de calcul. Le format de la table cible. Valeurs valides :

  • iceberg

  • parquet

  • orc

Non

Aucune