Data Integration de DataWorks permite usar Redis Writer para escribir datos en Redis. En este tema se describe cómo ejecutar escrituras por lotes en un origen de datos Redis mediante DataWorks.
Límites
Las tareas de importación de datos se pueden ejecutar en serverless resource groups (recomendado) y en exclusive resource groups for Data Integration.
-
Cuando se usa Redis Writer para escribir datos, volver a ejecutar una tarea de sincronización no es una operación idempotente si el valor es de tipo List. Por lo tanto, si el valor es de tipo List, elimine manualmente los datos correspondientes de Redis antes de volver a ejecutar la tarea.
ImportanteActualmente, Redis no admite configuraciones de filtro Bloom. Para manejar datos duplicados, aplique esta solución alternativa: agregue un nodo, como uno de Shell, Python o PyODPS, antes o después del nodo de sincronización en su flujo de trabajo para deduplicar los datos.
Tipos de datos compatibles
Redis admite un amplio conjunto de tipos de datos para valores, entre ellos String, List, Set, ZSet (sorted set) y Hash. Para obtener más información sobre Redis, consulte redis.io.
Desarrollo de tareas de sincronización de datos
Para conocer el punto de entrada y el procedimiento de configuración de una tarea de sincronización, consulte las siguientes guías de configuración.
Para consultar el procedimiento de configuración, consulte Configure a task in the codeless UI y Configure a task in the code editor.
Para ver la lista completa de parámetros y ejemplos de código del editor de código, consulte Appendix: Code samples and parameters.
Apéndice: ejemplos de código 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, especifique los parámetros correspondientes en el script según los requisitos unificados de formato de scripts. 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 utilice el editor de código.
Ejemplo de código de Writer
El siguiente código muestra un ejemplo de tarea de sincronización de datos que lee información de una base de datos MySQL y la escribe en Redis. Incluye el código tanto de MySQL Reader como de Redis Writer.
{
"type":"job",
"version":"2.0", // The version number.
"steps":[
{ // The following is a code sample for the Reader. For more information about Reader parameters, see the documentation for the corresponding Reader plugin.
"stepType":"mysql",
"parameter": {
"envType": 0,
"datasource": "xc_mysql_demo2",
"column": [
"id",
"value",
"table"
],
"connection": [
{
"datasource": "xc_mysql_demo2",
"table": []
}
],
"where": "",
"splitPk": "",
"encoding": "UTF-8"
},,
"name":"Reader",
"category":"reader"
},
{// The following is a code sample for the Writer.
"stepType":"redis", // The plugin name for Redis Writer. Set this parameter to redis.
"parameter":{ // The following section describes the main parameters of Redis Writer.
"expireTime":{ // The cache expiration time for Redis values. You can set this parameter to the seconds type or the unixtime type."seconds":"1000"
},
"keyFieldDelimiter":"u0001", // The delimiter for Redis keys.
"dateFormat":"yyyy-MM-dd HH:mm:ss",// The date format used when data is written to Redis.
"datasource":"xc_mysql_demo2", // The data source name. This must be the same as the name of the data source you added.
"envType": 0, // The environment type. Development environment: 1. Production environment: 0.
"writeMode":{ // The write mode.
"type":"string" // The value type.
"mode":"set", // The write mode for a specific value type.
"valueFieldDelimiter":"u0001", // The delimiter between values.
},
"keyIndexes":[0,1], // Used for mapping from the source to Redis. Specifies the source columns to be used as the key (the first column starts from 0). For example, if the first and second columns of the source are combined as the Redis key, set this parameter to [0,1].
"batchSize":"1000" // The number of records in each batch.
"column": [ // For Redis type string with set operation: if this column is not configured, the value format is a delimiter-separated string (CSV format. Assuming ID=1, name="John", age=18, sex=male, the Redis value example: "18::male"). If column is configured in the following format, the Redis value will be written in JSON format. Assuming ID=1, name="John", age=18, sex=male, the Redis value example: {"id":1,"name":"John","age":18,"sex":"male"}
{
"name": "id",
"index": "0"
},
{
"name": "name",
"index": "1"
},
{
"name": "age",
"index": "2"
},
{
"name": "sex",
"index": "3"
}
]
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0" // The error count.
},
"speed":{
"throttle":true,// When throttle is set to false, the mbps parameter does not take effect, which means throttling is disabled. When throttle is set to true, throttling is enabled.
"concurrent":1, // The concurrency of the job.
"mbps":"12"// The throttling rate. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
Parámetros de Writer
|
Parámetro |
Descripción |
Obligatorio |
Valor predeterminado |
|
expireTime |
Tiempo de expiración de la caché para los valores de Redis, en segundos. Si no se especifica este parámetro, se utiliza el valor predeterminado Configure expireTime de dos maneras:
|
No |
0 (0 indica que los datos nunca expiran) |
|
keyFieldDelimiter |
Delimitador para las claves de Redis. Por ejemplo, key=key1\u0001id. Este parámetro es obligatorio si necesita concatenar varias claves. Si solo se utiliza una clave, puede omitirlo. |
No |
\u0001 |
|
dateFormat |
Formato de fecha que se utiliza al escribir datos en Redis: yyyy-MM-dd HH:mm:ss. |
No |
N/D |
|
datasource |
Nombre del origen de datos. El valor debe coincidir con el nombre del origen de datos que agregó. |
Sí |
N/D |
|
selectDatabase |
Base de datos de Redis donde se escribirán los datos ( |
No |
Base de datos 0 de forma predeterminada |
|
writeMode |
Redis Writer admite los siguientes cinco tipos de valores para escribir datos en Redis:
La configuración de writeMode varía ligeramente según el tipo de valor. Para obtener más información, consulte la sección Descripción del parámetro writeMode más adelante. Nota
Al configurar Redis Writer, establezca writeMode en uno de los cinco tipos de datos admitidos; solo puede especificar un tipo. Si no configura este parámetro, writeMode toma el valor predeterminado |
No |
string |
|
keyIndexes |
Especifica los índices de las columnas de origen que se utilizarán como clave. Los índices comienzan en 0 (la primera columna tiene el índice 0, la segunda el 1, y así sucesivamente).
Nota
Después de configurar keyIndexes, Redis Writer utiliza las columnas restantes como valor. Si desea sincronizar únicamente ciertas columnas como clave y otras como valor, no es necesario sincronizar todas las columnas. Especifique el parámetro column en el plugin Reader para filtrarlas. |
Sí |
N/D |
|
batchSize |
Cantidad de registros en cada lote. Este parámetro reduce significativamente el número de interacciones de red entre el sistema de sincronización de datos y Redis, lo que mejora el rendimiento general. Si establece un valor demasiado alto, el proceso de sincronización podría generar un error de falta de memoria (OOM). |
No |
1,000 |
|
timeout |
Tiempo de espera para escribir datos en Redis, en milisegundos. |
No |
30,000 |
|
redisMode |
Modo de ejecución de Redis. Valores válidos:
Nota
Compatible con serverless resource groups (recomendado) y con grupos de recursos exclusivos para Data Integration. |
No |
N/D |
|
column |
Configuración de columnas para escribir datos en Redis. Para el tipo string de Redis con la operación set:
|
No |
N/D |
Descripción del parámetro writeMode
Al configurar Redis Writer, establezca writeMode en uno de los cinco tipos de datos admitidos; solo puede especificar un tipo. Si no configura este parámetro, writeMode toma el valor predeterminado string.
|
Tipo de valor |
Parámetro type (obligatorio) |
Parámetro mode (obligatorio) |
Parámetro valueFieldDelimiter (opcional) |
Ejemplo de configuración de writeMode |
|
String |
Establezca type en |
mode es el parámetro del modo de escritura. Cuando el valor es de tipo string:
|
valueFieldDelimiter es el delimitador entre valores. El valor predeterminado es
|
|
|
List |
Establezca type en |
mode es el parámetro del modo de escritura. Cuando el valor es de tipo list, están disponibles las siguientes opciones:
|
|
|
|
Set |
Establezca type en |
mode es el parámetro del modo de escritura. Cuando el valor es de tipo set:
|
|
|
|
ZSet (sorted set) |
Establezca type en |
mode es el parámetro del modo de escritura. Cuando el valor es de tipo ZSet (sorted set):
|
No es necesario configurar este parámetro. |
Nota
Cuando el tipo de valor es zset, cada fila de datos de origen debe seguir el formato correspondiente. Cada fila solo puede contener un par score-value además de la clave, y el score debe ir antes del valor para que Redis Writer identifique correctamente qué columna corresponde al score y cuál al valor. |
|
Hash |
Establezca type en |
mode es el parámetro del modo de escritura. Cuando el valor es de tipo hash:
|
No es necesario configurar este parámetro. |
Nota
Cuando el tipo de valor es hash, cada fila de datos de origen debe seguir el formato correspondiente. Cada fila solo puede contener un par attribute-value además de la clave, y el atributo debe ir antes del valor para que Redis Writer identifique correctamente qué columna corresponde al atributo y cuál al valor. |