关于从MongoDB读取数据到MaxCompute的实践

关于从MongoDB读取数据到MaxCompute的实践

主要步骤请参考以下几篇阿里云的操作手册,这里主要突出一些容易翻车的地方。

  1. 操作文档
    1.1. JSON数据从MangoDB迁移至MaxCompute
    https://help.aliyun.com/document_detail/98009.html
    1.2. MongoDB Reader
    https://help.aliyun.com/knowledge_detail/137723.html?spm=a1z3jh.13523495.0.0.27af6242QjHuK5#title-pl1-a31-zmh
    1.3. MaxCompute Writer
    https://help.aliyun.com/knowledge_detail/137466.html?spm=a1z3jh.13523495.0.0.27af6242u433mo

  2. 翻车点
    本文MongoDB的json字符串用例为:

{
    "store":{
        "book":[
            {
                "category":"reference",
                "author":"Nigel Rees",
                "title":"Sayings of the Century",
                "price":8.95
            },
            {
                "category":"fiction",
                "author":"Evelyn Waugh",
                "title":"Sword of Honour",
                "price":12.99
            },
            {
                "category":"fiction",
                "author":"J. R. R. Tolkien",
                "title":"The Lord of the Rings",
                "isbn":"0-395-19395-8",
                "price":22.99
            }
        ],
        "bicycle":{
            "color":"red",
            "price":19.95
        }
    },
    "expensive":10
}

本例采用脚本的形式将json文件读取到MaxCompute中:

{
    "type": "job",
    "steps": [
		//读取json的配置脚本
        {
            "stepType": "mongodb", //数据源类型
            "name": "Reader",
            "category": "reader",
            "parameter": {
                "datasource": "mongodb_userlog", //数据源名称
                "collectionName": "userlog", //集合名称。
                "query": "{'$gte','2019-02-04'}", //数据查询过滤,只支持时间类型
                "column": [
                    {
                        "name": "store.bicycle.color", //JSON字段路径,本例中提取color值。
                        "type": "document.String" //非一层子属性以最终获取的类型为准。假如您选取的JSON字段为一级字段,例如本例中的expensive,则直接填写string即可。
                    }
                ]
            }
        },
		//写入到MaxCompute的配置脚本
        {
            "stepType": "odps",
            "name": "Writer",
            "category": "writer",
            "parameter": {
                "table": "mqdata", //MaxCompute表名
                "partition": "", //设置分区
                "isCompress": false, //是否压缩
                "truncate": true, //写入数据前是否对原数据进行清除
                "datasource": "odps_first",
                "column": [
                    "mqdata" //MaxCompute表列名。
                ],
                "emptyAsNull": false //空字符串是否作为null
            }
        }
    ],
    "version": "2.0",
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    },
    "setting": {
        "errorLimit": {
            "record": "" //错误记录数,表示脏数据的最大容忍条数。
        },
        "speed": {
            "concurrent": 2, //作业并发度
            "throttle": false //是否限流
        }
    }
}

2.1. MongoDB Reader中需要注意的地方
 query只支持时间类型。
 MongoDB严格区分大小写,所以在读取json文件时,字段必须大小写完全一致。
 当读取MongoDB的json文件具有集群模式,存在切片的情况下,任务并行度只能设置为1,查询语句不能使用。
2.2. MaxCompute Writer中需要注意的地方
 表字段内容的写入和读取的顺序完全一致,和表的列名没有任何关系,注意做到顺序的一一对应。
 当读取MongoDB的json文件具有集群模式,存在切片的情况下,任务并行度只能设置为1,否则读取不到数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值