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
El motor de tabla ancha es compatible con Serverless resource groups (recommended) y exclusive resource groups for Data Integration.
El motor de cómputo solo admite Serverless resource groups.
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
Orígenes de datos compatibles: todos los tipos de origen que admite el módulo Data Integration.
-
Guía de configuración: Offline Synchronization Capabilities
Para consultar todos los parámetros del modo script y los scripts de ejemplo, consulte Appendix: Sample scripts and parameters .
Sincronización en tiempo real de una sola tabla
Orígenes de datos compatibles: Kafka, LogHub y Hologres.
Guía de configuración: Single-Table Real-Time Synchronization Capabilities
Sincronización en tiempo real de toda la base de datos
Origen de datos compatible: PostgreSQL.
Guía de configuración: Configure real-time full-database synchronization tasks
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: Límites:
| No | Ninguna | ||||||||||||||||||||
session | Específico del motor de cómputo. Parámetros de trabajo de sesión, como | 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.
| 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.
| 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.
| 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.
| No | EMPTY_BYTES |
formatType | Específico del motor de cómputo. Define el tipo de tabla que se va a sincronizar. Valores válidos:
| No | Ninguna |