O plugin MongoDB Writer no DataWorks Data Integration sincroniza dados de outras fontes para o MongoDB. Este tópico explica como sincronizar dados em lote do MaxCompute para o MongoDB.
Pré-requisitos
Antes de começar, verifique se os seguintes requisitos foram atendidos:
O DataWorks está ativado e uma source de dados do MaxCompute foi adicionada.
-
Este tutorial utiliza um grupo de recursos exclusivo para Data Integration para executar a tarefa em lote. Adquira e configure esse grupo de recursos antes de prosseguir. Para mais informações, consulte Usar um grupo de recursos exclusivo para Data Integration.
NotaTambém é possível utilizar um grupo de recursos serverless. Para mais informações, consulte Usar um grupo de recursos serverless.
Preparar dados de exemplo
Prepare uma coleção do MongoDB e uma tabela do MaxCompute para a sincronização em lote.
-
Crie uma tabela no MaxCompute e adicione dados a ela.
-
Crie uma tabela particionada chamada
test_write_mongo. Defina o campo de partição 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; -
Adicione uma partição com o 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'); -
Verifique se a tabela particionada foi criada corretamente.
SELECT * FROM test_write_mongo WHERE pt='20230215';
-
-
Prepare a coleção de destino no MongoDB.
Este tutorial usa o ApsaraDB for MongoDB como exemplo. Crie uma coleção chamada
test_write_mongo.db.createCollection('test_write_mongo')
Configuração da tarefa em lote
Etapa 1: Adicionar uma source de dados do MongoDB
Adicione uma source de dados do MongoDB e estabeleça uma conexão de rede entre ela e o grupo de recursos exclusivo para Data Integration. Para mais informações, consulte Configurar uma source de dados do MongoDB.
Etapa 2: Criar e configurar um nó de sincronização em lote
No DataStudio do DataWorks, crie um nó de sincronização em lote e configure sua origem e destino. Esta seção descreve apenas os parâmetros principais. Mantenha os demais parâmetros com seus valores padrão. Para instruções detalhadas, consulte Configurar uma tarefa na interface sem código.
-
Configure a conexão de rede para sincronização.
Selecione a source de dados do MongoDB, a source de dados do MaxCompute e o grupo de recursos exclusivo para Data Integration. Em seguida, teste a conectividade.
-
Configure a origem e o destino.
Selecione a tabela particionada do MaxCompute e a coleção do MongoDB. A tabela a seguir descreve os parâmetros principais.
Parâmetro
Descrição
write mode
Determina se os dados existentes devem ser sobrescritos. Essa funcionalidade envolve duas configurações relacionadas:
write modeebusiness primary key:-
write mode:-
Ao selecionar No, o plugin insere cada registro como um novo documento. Esta é a opção padrão.
-
Ao selecionar Yes, especifique uma
business primary key. O plugin então sobrescreve os registros que possuem a mesma chave primária de negócio.
-
-
business primary key: Especifica a chave primária de negócio para cada registro, utilizada na operação de sobrescrita. Apenas um campo pode ser especificado. No MongoDB, isso geralmente corresponde ao campo_id.
NotaSe
write modeestiver definido como Yes e você especificar um campo diferente de _id como chave primária de negócio, poderá ocorrer um erro semelhante ao seguinte:After applying the update, the (immutable) field '_id' was found to have been altered to _id: "2". Esse erro acontece porque os dados de entrada contêm um registro cujo _id não corresponde ao _id do documento existente identificado pela chave primária de negócio. Para mais informações, consulte Erro: After applying the update, the (immutable) field '_id' was found to have been altered to _id: "2".Pre-Import Statement
Especifica uma pré-condição (PreSQL) executada antes da tarefa de importação. A configuração deve estar no formato JSON e incluir as propriedades
typeejson.-
type: Obrigatório. Os valores válidos sãoremoveedrop(em letras minúsculas). -
json:-
Quando
typeestiver definido comoremove, este parâmetro é obrigatório. Seu valor deve ser uma consulta padrão do MongoDB. Para mais informações, consulte Query Documents. -
Caso
typeesteja definido comodrop, este parâmetro não é necessário.
-
-
-
Configure o mapeamento de campos.
Quando a source de dados é o MongoDB, o Peer mapping é usado por padrão. Clique em no ícone
para editar manualmente os campos da tabela de origem. Veja abaixo um exemplo de edição 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":","}Após editar os campos manualmente, a interface exibe o mapeamento entre os campos de origem e de destino.
Campo de origem
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":","}
Etapa 3: Confirmar e implantar o nó de sincronização em lote
Para executar essa tarefa periodicamente em um workspace no modo padrão, confirme e implante o nó de sincronização em lote no ambiente de produção. Para mais informações, consulte implantação de nós.
Etapa 4: Executar o nó de sincronização em lote e visualizar os resultados
Após configurar o nó, execute-o. Quando a tarefa for concluída, visualize os dados sincronizados na coleção do MongoDB. A tarefa cria um documento no banco de dados de destino com os seguintes campos e valores: _id é 63ecc513143e565c9b037623, col_array é [1, 2, 3], col_bigint é 111, col_boolean é true, col_date é 2023-02-15T07:01:01.000Z, col_decimal é 1.22, col_int é 1, col_string é name11 e id é 11.
Apêndice: Conversão de tipos de dados
Valores suportados para o parâmetro type
Os valores suportados para o parâmetro type são: INT, LONG, DOUBLE, STRING, BOOL, DATE e ARRAY.
Tipo Array
Para gravar dados como um array do MongoDB, defina o parâmetro type como ARRAY e configure a propriedade splitter. Por exemplo:
Os dados de origem são a string:
a,b,c.Na configuração da tarefa, type está definido como
ARRAYe splitter está definido como,.Após a execução da tarefa, os dados resultantes no MongoDB serão:
["a","b","c"].