datax mongodbwriter 使用

  • 2022-07-14
  • 浏览 (1513)

Datax MongoDBWriter

1 快速介绍

MongoDBWriter 插件利用 MongoDB 的java客户端MongoClient进行MongoDB的写操作。最新版本的Mongo已经将DB锁的粒度从DB级别降低到document级别,配合上MongoDB强大的索引功能,基本可以满足数据源向MongoDB写入数据的需求,针对数据更新的需求,通过配置业务主键的方式也可以实现。

2 实现原理

MongoDBWriter通过Datax框架获取Reader生成的数据,然后将Datax支持的类型通过逐一判断转换成MongoDB支持的类型。其中一个值得指出的点就是Datax本身不支持数组类型,但是MongoDB支持数组类型,并且数组类型的索引还是蛮强大的。为了使用MongoDB的数组类型,则可以通过参数的特殊配置,将字符串可以转换成MongoDB中的数组。类型转换之后,就可以依托于Datax框架并行的写入MongoDB。

3 功能说明

  • 该示例从ODPS读一份数据到MongoDB。

    {
    "job": {
    "setting": {
        "speed": {
            "channel": 2
        }
    },
    "content": [
        {
            "reader": {
                "name": "odpsreader",
                "parameter": {
                    "accessId": "********",
                    "accessKey": "*********",
                    "project": "tb_ai_recommendation",
                    "table": "jianying_tag_datax_test",
                    "column": [
                        "unique_id",
                        "sid",
                        "user_id",
                        "auction_id",
                        "content_type",
                        "pool_type",
                        "frontcat_id",
                        "categoryid",
                        "gmt_create",
                        "taglist",
                        "property",
                        "scorea",
                        "scoreb"
                    ],
                    "splitMode": "record",
                    "odpsServer": "http://xxx/api"
                }
            },
            "writer": {
                "name": "mongodbwriter",
                "parameter": {
                    "address": [
                        "127.0.0.1:27017"
                    ],
                    "userName": "",
                    "userPassword": "",
                    "dbName": "tag_per_data",
                    "collectionName": "tag_data",
                    "column": [
                        {
                            "name": "unique_id",
                            "type": "string"
                        },
                        {
                            "name": "sid",
                            "type": "string"
                        },
                        {
                            "name": "user_id",
                            "type": "string"
                        },
                        {
                            "name": "auction_id",
                            "type": "string"
                        },
                        {
                            "name": "content_type",
                            "type": "string"
                        },
                        {
                            "name": "pool_type",
                            "type": "string"
                        },
                        {
                            "name": "frontcat_id",
                            "type": "Array",
                            "splitter": " "
                        },
                        {
                            "name": "categoryid",
                            "type": "Array",
                            "splitter": " "
                        },
                        {
                            "name": "gmt_create",
                            "type": "string"
                        },
                        {
                            "name": "taglist",
                            "type": "Array",
                            "splitter": " "
                        },
                        {
                            "name": "property",
                            "type": "string"
                        },
                        {
                            "name": "scorea",
                            "type": "int"
                        },
                        {
                            "name": "scoreb",
                            "type": "int"
                        },
                        {
                            "name": "scorec",
                            "type": "int"
                        }
                    ],
    				"upsertInfo": {
    					"isUpsert": "true",
    					"upsertKey": "unique_id"
    				}
                }
            }
        }
    ]
    }
    }
    

4 参数说明

  • address: MongoDB的数据地址信息,因为MonogDB可能是个集群,则ip端口信息需要以Json数组的形式给出。【必填】
  • userName:MongoDB的用户名。【选填】
  • userPassword: MongoDB的密码。【选填】
  • collectionName: MonogoDB的集合名。【必填】
  • column:MongoDB的文档列名。【必填】
  • name:Column的名字。【必填】
  • type:Column的类型。【选填】
  • splitter:特殊分隔符,当且仅当要处理的字符串要用分隔符分隔为字符数组时,才使用这个参数,通过这个参数指定的分隔符,将字符串分隔存储到MongoDB的数组中。【选填】
  • upsertInfo:指定了传输数据时更新的信息。【选填】
  • isUpsert:当设置为true时,表示针对相同的upsertKey做更新操作。【选填】
  • upsertKey:upsertKey指定了没行记录的业务主键。用来做更新时使用。【选填】

5 类型转换

DataX 内部类型 MongoDB 数据类型
Long int, Long
Double double
String string, array
Date date
Boolean boolean
Bytes bytes

6 性能报告

7 测试报告

相关文章

datax README 使用

datax adbpgwriter 使用

datax adswriter 使用

datax cassandrareader 使用

datax cassandrawriter 使用

datax dataxPluginDev 使用

datax drdsreader 使用

datax drdswriter 使用

datax elasticsearchwriter 使用

datax ftpreader 使用

0  赞