El plugin MongoDB Writer de DataWorks Data Integration sincroniza datos desde otros orígenes hacia MongoDB. En este tema se explica cómo configurar una sincronización por lotes de MaxCompute a MongoDB.
Requisitos previos
Antes de empezar, asegúrese de cumplir con los siguientes requisitos:
DataWorks está activado y ya agregó un origen de datos de MaxCompute.
-
Este tutorial utiliza un resource group exclusivo para Data Integration con el fin de ejecutar la tarea por lotes. Compre y configure este resource group antes de continuar. Para obtener más información, consulte Use an exclusive resource group for Data Integration.
NotaTambién puede utilizar un resource group serverless. Para obtener más información, consulte Use a serverless resource group.
Preparación de los datos de ejemplo
Prepare una colección de MongoDB y una tabla de MaxCompute para la sincronización por lotes.
-
Cree una tabla de MaxCompute y agregue datos.
-
Cree una tabla particionada llamada
test_write_mongo. Establezca el campo de partición comopt.CREATE TABLE IF NOT EXISTS test_write_mongo( id STRING , col_string STRING, col_int int, col_bigint bigint, col_decimal decimal, col_date DATETIME, col_boolean boolean, col_array string ) PARTITIONED BY (pt STRING) LIFECYCLE 10; -
Agregue una partición con el valor
20230215.insert into test_write_mongo partition (pt='20230215') values ('11','name11',1,111,1.22,cast('2023-02-15 15:01:01' as datetime),true,'1,2,3'); -
Compruebe que la tabla particionada se haya creado correctamente.
SELECT * FROM test_write_mongo WHERE pt='20230215';
-
-
Prepare la colección de destino en MongoDB.
En este tutorial se usa ApsaraDB for MongoDB como ejemplo. Cree una colección llamada
test_write_mongo.db.createCollection('test_write_mongo')
Configuración de la tarea por lotes
Paso 1: Agregar un origen de datos de MongoDB
Agregue un origen de datos de MongoDB y establezca una conexión de red entre este y el resource group exclusivo para Data Integration. Para obtener más información, consulte Configure a MongoDB data source.
Paso 2: Crear y configurar un nodo de sincronización por lotes
En DataWorks DataStudio, cree un nodo de sincronización por lotes y configure su origen y destino. Esta sección describe únicamente los parámetros clave. Deje el resto de los parámetros con sus valores predeterminados. Para consultar las instrucciones detalladas, revise Configure a task in the codeless UI.
-
Configure la conexión de red para la sincronización.
Seleccione el origen de datos de MongoDB, el origen de datos de MaxCompute y el resource group exclusivo para Data Integration. Después, compruebe la conectividad.
-
Configure el origen y el destino.
Seleccione la tabla particionada de MaxCompute y la colección de MongoDB. A continuación se describen los parámetros clave.
Parámetro
Descripción
write mode
Determina si se sobrescriben los datos existentes. Esta funcionalidad involucra dos ajustes relacionados:
write modeybusiness primary key:-
write mode:-
Si selecciona No, el plugin inserta cada registro como un documento nuevo. Esta es la opción predeterminada.
-
Si selecciona Yes, debe especificar una
business primary key. El plugin sobrescribe entonces los registros que comparten la misma business primary key.
-
-
business primary key: Especifica la clave principal de negocio de cada registro, la cual se utiliza para la operación de sobrescritura. Solo puede especificar un campo. En MongoDB, esto suele corresponder al campo_id.
NotaSi establece
write modeen Yes y especifica un campo distinto de _id como business primary key, podría producirse un error similar al siguiente:After applying the update, the (immutable) field '_id' was found to have been altered to _id: "2". Este error ocurre porque los datos entrantes contienen un registro cuyo _id no coincide con el _id del documento existente identificado por la business primary key. Para obtener más información, consulte Error: After applying the update, the (immutable) field '_id' was found to have been altered to _id: "2".Pre-Import Statement
Especifica una condición previa (PreSQL) que se ejecuta antes de la tarea de importación. La configuración debe estar en formato JSON e incluir las propiedades
typeyjson.-
type: Obligatorio. Los valores válidos sonremoveydrop(en minúsculas). -
json:-
Si establece
typeenremove, este parámetro es obligatorio. Su valor debe ser una consulta estándar de MongoDB. Para obtener más información, consulte Query Documents. -
Si establece
typeendrop, este parámetro no es obligatorio.
-
-
-
Configure la asignación de campos.
Cuando el origen de datos es MongoDB, se utiliza Map Fields in Same Row de forma predeterminada. También puede hacer clic en el ícono
para editar manualmente los campos de la tabla de origen. A continuación se muestra un ejemplo de edición manual.{"name":"id","type":"string"} {"name":"col_string","type":"string"} {"name":"col_int","type":"long"} {"name":"col_bigint","type":"long"} {"name":"col_decimal","type":"double"} {"name":"col_date","type":"date"} {"name":"col_boolean","type":"bool"} {"name":"col_array","type":"array","splitter":","}Después de editar los campos manualmente, la interfaz muestra la asignación entre los campos de origen y de destino.
Campo de origen
Campo de destino
id
{"name":"id","type":"string"}col_string
{"name":"col_string","type":"string"}col_int
{"name":"col_int","type":"long"}col_bigint
{"name":"col_bigint","type":"long"}col_decimal
{"name":"col_decimal","type":"double"}col_date
{"name":"col_date","type":"date"}col_boolean
{"name":"col_boolean","type":"bool"}col_array
{"name":"col_array","type":"array","splitter":","}
Paso 3: Confirmar y desplegar el nodo de sincronización por lotes
Para ejecutar esta tarea de forma periódica en un workspace en modo estándar, debe confirmar y desplegar el nodo de sincronización por lotes en el entorno de producción. Para obtener más información, consulte node deployment.
Paso 4: Ejecutar el nodo de sincronización por lotes y consultar los resultados
Una vez configurado el nodo, ejecútelo. Cuando finalice la tarea, consulte los datos sincronizados en la colección de MongoDB. La tarea crea un registro de documento en la base de datos de destino con los siguientes campos y valores: _id es 63ecc513143e565c9b037623, col_array es [1, 2, 3], col_bigint es 111, col_boolean es true, col_date es 2023-02-15T07:01:01.000Z, col_decimal es 1.22, col_int es 1, col_string es name11 y id es 11.
Apéndice: Conversión de tipos de datos
Valores compatibles para el parámetro type
Los valores compatibles para el parámetro type son: INT, LONG, DOUBLE, STRING, BOOL, DATE y ARRAY.
Tipo array
Para escribir datos como un array de MongoDB, establezca el parámetro type en ARRAY y configure la propiedad splitter. Por ejemplo:
Los datos de origen son la cadena:
a,b,c.En la configuración de la tarea, type se establece en
ARRAYy splitter en,.Tras ejecutar la tarea, los datos resultantes en MongoDB son:
["a","b","c"].