1. 官网

2. 工具部署(通过下载DataX工具包)

2.1 下载、解压

  • 因为官网很详细,这里就简单记录一下:
    下载 datax.tar.gz ,然后解压,命令如下:
    tar -zxvf datax.tar.gz
    
    在这里插入图片描述
  • 查看解压后的目录
    在这里插入图片描述

2.2 配置

2.2.1 查看配置模版

  • 命令如下:
    python datax.py -r streamreader -w streamwriter
    
    在这里插入图片描述

2.2.2 根据模版配置json

  • 创建stream2stream.json文件,如下:
    cd /Users/susu/study_down/about_datax/datax/job
    
    vim stream2stream.json
    
  • stream2stream.json 内容如下:
    #stream2stream.json
    {
      "job": {
        "content": [
          {
            "reader": {
              "name": "streamreader",
              "parameter": {
                "sliceRecordCount": 10,
                "column": [
                  {
                    "type": "long",
                    "value": "10"
                  },
                  {
                    "type": "string",
                    "value": "hello,你好,世界-DataX"
                  }
                ]
              }
            },
            "writer": {
              "name": "streamwriter",
              "parameter": {
                "encoding": "UTF-8",
                "print": true
              }
            }
          }
        ],
        "setting": {
          "speed": {
            "channel": 5
           }
        }
      }
    }
    

2.2.3 启动DataX

  • 启动命令,开始同步,如下:
    python ../bin/datax.py stream2stream.json
    
    在这里插入图片描述
    在这里插入图片描述
  • 同步结束,查看日志如下:
    在这里插入图片描述

3. datax的简单使用

  • 环境有限,下面就以mysql为主了,mysql_to_别的数据库,后续有机会再做介绍

3.1 mysql2stream

  • 使用命令先查看模版:

    python datax.py -r mysqlreader -w streamwriter
    
  • mysql2stream.json 如下:

    {
    	"job": {
    		"setting": {
    			"speed": {
    				"channel": 3
    			},
    			"errorLimit": {
    				"record": 0,
    				"percentage": 0.02
    			}
    		},
    		"content": [{
    			"reader": {
    				"name": "mysqlreader",
    				"parameter": {
    					"username": "root",
    					"password": "susu@123",
    					"column": [
    						"dog_num",
    						"dog_name"
    					],
    					"splitPk": "dog_num",
    					"connection": [{
    						"table": [
    							"dog"
    						],
    						"jdbcUrl": [
    							"jdbc:mysql://127.0.0.1:3306/datax_1"
    						]
    					}]
    				}
    			},
    			"writer": {
    				"name": "streamwriter",
    				"parameter": {
    					"print": true
    				}
    			}
    		}]
    	}
    }
    
    
  • 效果如下:

    python ../bin/datax.py mysql2stream.json
    

    在这里插入图片描述

3.2 mysql2mysql

  • 使用命令先查看模版:
    python datax.py -r mysqlreader -w mysqlwriter
    

3.2.1 拼接where的

  • mysql2mysql_where.json文件如下:
    {
    	"job": {
    		"content": [{
    			"reader": {
    				"name": "mysqlreader",
    				"parameter": {
    					"column": ["*"],
    					"connection": [{
    						"jdbcUrl": ["jdbc:mysql://127.0.0.1:3306/datax_1"],
    						"table": ["dog"]
    					}],
    					"username": "root",
    					"password": "susu@123",
    					"where": "dog_num=1000003"
    				}
    			},
    			"writer": {
    				"name": "mysqlwriter",
    				"parameter": {
    					"column": ["*"],
    					"connection": [{
    						"jdbcUrl": "jdbc:mysql://127.0.0.1:3306/datax_2",
    						"table": ["dog"]
    					}],
    					"username": "root",
    					"password": "susu@123",
    					"writeMode": "insert"
    				}
    			}
    		}],
    		"setting": {
    			"speed": {
    				"channel": "1"
    			}
    		}
    	}
    }
    
    
  • 效果如下:
    python ../bin/datax.py mysql2mysql_where.json
    
    在这里插入图片描述
    在这里插入图片描述

3.2.2 直接写查询的sql语句的

  • 使用querySql参数(注意querySql 和 SQL 只能保留一个),如下:
    在这里插入图片描述
    在这里插入图片描述
  • mysql2mysql_query.json 文件代码如下:
    {
    	"job": {
    		"content": [{
    			"reader": {
    				"name": "mysqlreader",
    				"parameter": {
    					"connection": [{
    						"jdbcUrl": ["jdbc:mysql://127.0.0.1:3306/datax_1"],
    						"querySql": [
    							"select t.dog_num,t.dog_name,t.db_source from dog t where dog_num=1000004"
    						]
    					}],
    					"username": "root",
    					"password": "susu@123"
    				}
    			},
    			"writer": {
    				"name": "mysqlwriter",
    				"parameter": {
    					"column": ["*"],
    					"connection": [{
    						"jdbcUrl": "jdbc:mysql://127.0.0.1:3306/datax_2",
    						"table": ["dog"]
    					}],
    					"username": "root",
    					"password": "susu@123",
    					"writeMode": "insert"
    				}
    			}
    		}],
    		"setting": {
    			"speed": {
    				"channel": "1"
    			}
    		}
    	}
    }
    
    
  • 效果如下:
    python ../bin/datax.py mysql2mysql_query.json
    
    在这里插入图片描述
    在这里插入图片描述

4. 解释

4.1 json中seeting说明

  • 关于seeting
    setting
    	speed表示控制并发数
    		channel设置并发的数量
    		如果设置的print为true,则会打印slicRecordCount*channel次
    		如果是从mysql导入hdfs等其他操作,则会是真正代表并发数,而不是打印多少次
    

4.2 参数说明(以mysql为例)

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐