datax学习笔记

tar -zxvf datax.tar.gz -c /opt/module/ 指定目录解压

解压之后,datax下的目录:

  • bin 运行的命令跟脚本
  • conf 配置文件
  • lib 依赖
  • plugin 读写插件的jar包
  • job 编写的某一个XX的同步脚本 比如说mysql 同步hdfs 的json串 写在job里面
  • script
  • tmp

bin 目录下有:

  • datax.py
  • dxprof.py
  • perftrace.py

最核心的是 datax.py 我们要运行的就是这个脚本
datax.py是一个python脚本,我们运行的时候 执行的命令是:python datax.py xxx

conf 目录下有:

  • core.json 全局核心配置
  • logback.xml 日志相关的

job目录下有:

  • job.json 就是一个模板

lib目录下:

  • xxx.jar
  • yyy.jar
  • zzz.jar
    lib目录下就是一些公共依赖

plugin目录下:

  • reader
  • writer
    plugin目录下有各种数据源的依赖

进入reader目录(cd reader/):

  • casscandrareader
  • drdsreader
  • ftpreader
  • hdfsreader
  • xxx
    这些就是目前支持读取的数据源,前缀就是目前支持的数据源的名称

进入hdfsreader目录(cd hdfsreader/):

  • hdfsreader-0.0.1-SNAPSHOT.jar 就是一个jar包
  • libs 里面是自己需要的一些依赖
  • plugin_job_template.json 模板
  • plugin.json 一些配置

安装python的命令:yum install -y python
打开官方自带模板的命令:python bin/datax.py ./job/job.json

job.json 就是一个json串,主要分为4部分内容

{
	作业设置
	reader
	writer
	参数:速率、错误率
}

Setting参数说明

"setting":{
	"speed":{ //传输速率控制
		"channel":1//并发数
		"byte":100    //从数据量的角度来限制 比如100  以上就是每秒钟最高只能达到100字节  /s  上面是从流量和数据量来控制
	}, 
	"errorLimit":{  //容错比例配置
		"record":1, //错误条数上限,超出则任务失败
		“percentage”:0.02 //错误比例上限,超出则任务失败
	}
}

mysqlreader参数解析

"reader": {   
             //name:reader名
             "name": "mysqlreader",    
             "parameter": {
                 //column:需要同步的列名集合,使用JSON数组描述自带信息 *代表所有列
                 "column": [],
                 "connection": [
                     {
                         //需要同步的表,支持多个
                         "table": [],
                         //jdbcUrl:对数据库的JDBC连接信息,使用JSON数组描述,支持多个连接地址                                          
                         "jdbcUrl": [],
                         //querySql:自定义SQL,配置它后,mysqlreader直接忽略table、column、where 也就是说 它的优先级是最高的"querySql":[]}
                 ],
                 //username:数据库用户名                           
                 "username": "",
                 //password:数据库用户名对应的密码
                 "password": "",
                 //where:筛选条件 比如只同步新增的数据,同步昨天的数据,where 创建时间=昨天"where":""//splitPK:数据分片字段,一般是主键,仅支持整型    job会切分成多个task,正常来说,你不指定的话 她会自动切,我们可以指定切分字段,让它切的更均匀  因为既然是切分,可能分的不均匀,所以我们可以指定这个切分条件,一般我们使用的是自增的主键,而且是整型的,不要指定字符串类型,比如自增ID"splitPK":""}
         }
 
注意:【】中的参数为可选参数

hdfswriter参数解析

 "writer": {
         //name:writer名
        "name": "hdfswriter",
        "parameter": {
            //column:写入数据的字段,其中name指定字段名,tyoe指定类型   不能写*   列里面的字段必须指定类型,并且顺序跟reader的保持一致  顺序不能错
           "column": [],
           //compress:hdfs文件压缩类型,默认不填写意味着不压缩
           "compress":"",
           //defaultFS:hdfs文件系统namenode节点地址,格式:hdfs://ip:端口
           "defaultFS":"",
           //fieldDelimiter:字符分隔符
           "fieldDelimiter": "",
           //fileName:写入文件名
           "fileName":"",
           //fileType:文件的类型,目前只支持用户配置为“、text”或"orc"
           "fileType":"",
           //path:存储到Hadoop hdfs文件系统的路径信息
           "path":"",
           //writeMode:hdfswriter写入数据清理处理模式:
               (1)append:写入前不做任何处理,DataX hdfswriter直接使用filename写入,并保证文件名不冲突
               (2)nonConflict:如果目录下有fileName前缀的文件,直接报错         
           "writeMode":""
        }
    }

datax怎么保证数据的一致性:

  • 写入一个临时文件
  • 因为是多线程,如果全部成功就修改文件名、路径
  • 如果个别失败那就是任务失败,job失败,删除临时路径
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值