O DataWorks é uma plataforma como service (PaaS) da Alibaba Cloud compatível com diversos mecanismos de computação e armazenamento. Este tópico descreve como usar o DataWorks para migrar dados offline do ApsaraDB for MongoDB para o LindormTable.
Informações básicas
Para obter mais informações sobre o DataWorks, consulte What is DataWorks?.
Observações de uso
Ao migrar dados offline do ApsaraDB for MongoDB para o LindormTable, achate os dados JSON aninhados do MongoDB em uma estrutura horizontal. Esse processo não envolve transformação de dados.
Se precisar transformar dados durante a migração, como aplicar um hash MD5 a uma chave primária nos dados do MongoDB, siga estas etapas:
Use o DataWorks para migrar os dados do ApsaraDB for MongoDB para o MaxCompute.
Execute instruções SQL no MaxCompute para processar os dados.
Use o DataWorks para migrar os dados processados do MaxCompute para o LindormTable.
Pré-requisitos
Antes de migrar dados offline do ApsaraDB for MongoDB para o LindormTable, conclua as etapas preparatórias a seguir.
-
Prepare os dados no ApsaraDB for MongoDB. O código a seguir mostra um documento de exemplo:
{ "id" : ObjectId("624573dd7c0e2eea4cc8****"), "title" : "MongoDB Tutorial", "description" : "MongoDB is a NoSQL database", "by" : "Beginner's Guide", "url" : "http://www.runoob.com", "map" : { "a" : "mapa", "b" : "mapb" }, "likes" : 100 } -
Prepare o esquema da tabela no LindormTable. O código a seguir apresenta um esquema de exemplo:
CREATE TABLE t1(title varchar, desc varchar, by1 varchar, url varchar, a varchar, b varchar, likes int, primary key(title)); Configure uma tarefa do DataX usando o service Data Integration do DataWorks. Para mais informações, consulte Configure a DataX task by using DataWorks.
Procedimento
Configure uma source de dados do ApsaraDB for MongoDB no console do DataWorks. Para mais informações, consulte Configure an ApsaraDB for MongoDB data source.
-
Configure uma tarefa de sincronização em lote usando o editor de código. Para mais informações, consulte Configure a batch synchronization task in the code editor.
-
Crie um workflow.
Acesse o console do DataWorks.
No painel de navegação à esquerda, clique em Workspaces.
Selecione a região onde seu workspace está localizado. Na coluna Actions do workspace desejado, escolha .
Na página Data Development, passe o mouse sobre o ícone
e clique em Create Workflow.-
Na caixa de diálogo Create Workflow, insira um Workflow Name e uma Description.
NotaO nome do workflow deve ter no máximo 128 caracteres e conter apenas letras maiúsculas, letras minúsculas, dígitos, sublinhados (_) e pontos (.).
Clique em Create.
-
Crie um nó de sincronização em lote.
Expanda o workflow e clique com o botão direito em Data Integration.
Escolha .
-
Na caixa de diálogo Create Node, insira um Name para o nó.
NotaO nome do nó deve ter no máximo 128 caracteres e conter apenas letras maiúsculas, letras minúsculas, dígitos, sublinhados (_) e pontos (.).
Clique em Submit.
-
Configure o reader e o writer.
Após criar o nó de sincronização em lote, clique no ícone Script Conversion (
</>) na barra de ferramentas da página de configuração da tarefa de sincronização em lote.Na caixa de diálogo exibida, clique em Confirm para acessar o editor de código.
-
O editor de código gera automaticamente uma configuração básica de reader. Configure manualmente as sources de dados do reader e do writer e especifique as tabelas a sincronizar. O código a seguir apresenta uma configuração de exemplo:
NotaPara obter mais informações sobre os parâmetros do MongoDB Reader, consulte MongoDB Reader.
Para obter mais informações sobre os parâmetros do Lindorm Writer, consulte Lindorm Writer.
{ "type": "job", "version": "2.0", "steps": [ { "stepType": "mongodb", "parameter": { "datasource": "test_mongo", // The name of the ApsaraDB for MongoDB data source. "column": [ { "name": "title", "type": "string" }, { "name": "description", "type": "string" }, { "name": "by", "type": "string" }, { "name": "url", "type": "string" }, { "name": "map.a", "type": "document.string" }, { "name": "map.b", "type": "document.string" }, { "name": "likes", "type": "int" } ], "collectionName": "testdatax" }, "name": "Reader", "category": "reader" }, { "stepType": "lindorm", "parameter": { "configuration": { "lindorm.client.seedserver": "ld-xxxx-proxy-lindorm.lindorm.rds.aliyuncs.com:30020", "lindorm.client.username": "root", "lindorm.client.namespace": "test", "lindorm.client.password": "root" }, "nullMode": "skip", "datasource": "", "writeMode": "api", "envType": 1, "columns": [ "title", "desc", "by", "url", "a", "b", "likes" ], "dynamicColumn": "false", "table": "t1", "encoding": "utf8" }, "name": "Writer", "category": "writer" } ], "setting": { "executeMode": null, "errorLimit": { "record": "" }, "speed": { "concurrent": 2, "throttle": false } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } } Salve a configuração e clique no ícone
no canto superior esquerdo do editor de código. Visualize o progresso da migração de dados na aba Runtime Log.
-