datax是一个搬数据的框架,是阿里巴巴公司的开源的框架,主要就是用来搬数据,多数据源之间的数据的处理。

datax的使用:

datax主要通过json文件来配置job,json的格式如下:

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "streamreader", 
                    "parameter": {
                        "column": [], 
                        "sliceRecordCount": ""
                    }
                }, 
                "writer": {
                    "name": "streamwriter", 
                    "parameter": {
                        "encoding": "", 
                        "print": true
                    }
                }
            }
        ], 
        "setting": {
            "speed": {
                "channel": ""
            }
        }
    }
}

上面就是一个简单的job文件,可以看出一个job包含reader和writer两个部分,初次接触datax的json文件时,感觉跟spring-batch很相似,都是分为一个一个的job,而且都包含reader和writer。但是datax与batch是不一样的,datax只是一个搬数据的数据同步工具,而batch是批量处理工具,batch可以对读到的数据进行处理,而datax没有这个功能,只能转移数据,读到的数据是什么,写出来就是什么。

datax是一个支持拓展插件的框架,也就是说datax是可以配置的,如果现有的插件满足不了需求,我们完全可以自己编辑插件。

datax的reader包括有:mysqlreader,txtfilereader,ftpreader,streamreader.....等,这些都是datax已经开发的插件,响应的writer有mysqlwriter,txtfilewriter,streamwriter....

具体不一一介绍,可以自己查询,json配置文件注释:

/*一个json就是一个job,一个job主要包含:
content,setting 两个属性*/
{
  "job": {
    /*content是job的核心,主要放reader和writer插件*/
    "content": {
      /*raader插件*/
      "reader": {},
      /*writer插件*/
      "writer": {}
    },
    /*setting主要用来设置job的基本设置*/
    "setting": {
      /*speed流量控制*/
      "speed": {
        "channel": 1, /*同步时候的并发数*/
        "byte": 1024 /*同步时候的字节大小,影响速度,可选*/
      },
      /*脏数据控制*/
      "errorLimit": {
        "record": 10,/*脏数据最大记录数阈值*/
        "percentage": 0.05 /*脏数据占比阈值*/
      }
    }
  }
}

json的reader和writer内容根据插件不同而变化,具体查询官网。