DataWorks怎么配置mongodb同步任务?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在阿里云DataWorks中配置MongoDB同步任务,需要按照以下步骤进行操作。以下是详细的配置流程和注意事项:
在进行数据同步之前,首先需要在DataWorks中创建MongoDB数据源。
root
账号,但出于安全策略考虑,避免使用root作为访问账号。mongos
地址,避免配置mongod/shard
节点地址,否则可能导致只查询到部分shard的数据。完成数据源创建后,需要配置离线同步任务以实现MongoDB数据的读取或写入。
MongoDB Reader用于从MongoDB中抽取数据,支持全量和增量同步。
{"createTime": {"$gte": "${bizdate}"}}
{
"name": "unique_id",
"type": "string"
},
{
"name": "a.b.c",
"type": "document"
}
注意:对于嵌套字段,可通过a.b.c
的方式递归解析。
splitVector
命令进行任务分片。如果MongoDB版本不支持该命令,需设置为false
。{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "mongodb",
"parameter": {
"datasource": "test_mongo",
"collectionName": "tag_data",
"query": "{\"createTime\": {\"$gte\": \"${bizdate}\"}}",
"column": [
{
"name": "unique_id",
"type": "string"
},
{
"name": "sid",
"type": "string"
}
]
}
}
]
}
根据目标数据源类型(如MaxCompute、Lindorm等),配置写入端参数。
insert
或replace
)。如果需要实现增量同步,可以通过调度参数动态替换时间范围。
${bizdate}
)。
{"createTime": {"$gte": "${bizdate}"}}
$bizdate
表示业务日期,格式为yyyyMMdd
。${bizdate}
会被替换为实际的业务日期。报错:no such cmd splitVector
解决方法:在MongoDB Reader参数中添加"useSplitVector": false
。
报错:operation exceeded time limit
解决方法:增大cursorTimeoutInMs
参数值(默认600000ms)。
大小写敏感问题
注意:Column.name
为大小写敏感,需确保与MongoDB字段名一致。
增量同步失败
解决方法:检查query
参数是否正确,并确保调度参数动态替换逻辑无误。
通过以上步骤,您可以成功配置MongoDB同步任务。如果有其他特殊需求(如整库同步、实时同步等),请参考相关文档进一步调整配置。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。