大家好,又见面了,我是你们的朋友全栈君。
简介
DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、HDFS、Hive、OceanBase、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。DataX采用了框架 + 插件 的模式,目前已开源,代码托管在github。
DataX安装部署及小试
1.下载压缩包:
下载页面地址:https://github.com/alibaba/DataX 在页面中【Quick Start】—>【Download DataX下载地址】进行下载。下载后的包名:datax.tar.gz。解压后{datax}目录下有{bin conf job lib log log_perf plugin script tmp}几个目录。
2.安装
将下载后的压缩包直接解压后可用,前提是对应的java及python环境满足要求。
System Requirements:
- Linux
- JDK(1.6以上,推荐1.6)
- Python(推荐Python2.6.X)一定要为python2,因为后面执行datax.py的时候,里面的python的print会执行不了,导致运行不成功,会提示你print语法要加括号,python2中加不加都行 python3中必须要加,否则报语法错
- Apache Maven 3.x (Compile DataX)
3.测试
配置测试样例:下面我们配置一组 从mysql数据库到另一个mysql数据库。
第一步、创建作业的配置文件(json格式)
可以通过命令查看配置模板:
python datax.py -r {YOUR_READER} -w {YOUR_WRITER} 当然也可以从https://github.com/alibaba/DataX自行配置。
第二步、根据配置文件模板填写相关选项
根据模板配置json文件(mysql2mysql.json)如下:
{
"job": {
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"column": [
"id",
"name"
],
"connection": [
{
"jdbcUrl": ["jdbc:mysql://127.0.0.1:3306/dq"],
"table": ["table1"]
}
],
"password": "123456",
"username": "root"
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"column": [
"id",
"name"
],
"connection": [
{
"jdbcUrl": "jdbc:mysql://ip地址:端口/test",
"table": ["table2"]
}
],
"password": "123456",
"username": "root"
}
}
}
],
"setting": {
"speed": {
"channel": "1"
}
}
}
}
第三步:启动DataX
启动之前数据库
启动
python datax.pyD:\Software\install\Environment\DataX\datax\job\mysql2mysql.json
启动之后数据库
出现的问题:
- Python版本要为2,原因前面已经说过了
- cmd乱码解决:输入CHCP 65001
- 数据库中的数据中文乱码解决:在json文件中jdbcUrl项加上:?characterEncoding=utf8
“jdbcUrl”: [“jdbc:mysql://127.0.0.1:3306/dq?characterEncoding=utf8”]
Java通过python命令执行DataX任务
上代码:
public class TestDatax {
public static void main(String[] args) {
try {
WebLogs.info("start");
String windowcmd = "cmd /c python datax.py D:\\Software\\install\\Environment\\DataX\\datax\\job\\mysql2mysql.json";
WebLogs.info(windowcmd);
//.exec("你的命令",null,new File("datax安装路径"));
Process pr = Runtime.getRuntime().exec(windowcmd,null,new File("D:\\Software\\install\\Environment\\DataX\\datax\\bin"));
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
WebLogs.info(line);
}
in.close();
pr.waitFor();
WebLogs.info("end");
} catch (Exception e) {
e.printStackTrace();
}
}
}
回首往昔,更进一步。
喜欢就点个赞关注一下呗 ~~
一个从装环境开始的学习记录公众号,欢迎大家关注:
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/145629.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...