关于从MongoDB读取数据到MaxCompute的一些注意点

从MongoDB读取数据到MaxCompute的实践

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

1. 操作文档

1.1. JSON数据从MangoDB迁移至MaxCompute

阿里云官方文档

1.2. MongoDB Reader

阿里云官方MongoDB Reader文档

1.3. MaxCompute Writer

阿里云官方MaxCompute Writer文档

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,否则读取不到数据。

你可能感兴趣的:(MaxCompute)