文章目录


01 引言

关于​​DataX​​​,在前面的博文​​《DataX入门》​​​已经介绍过,因为官方没有IDEA运行的示例文档,网上的资料参差不齐,所以本文主要讲解如何在​​IDEA​​​的环境下跑起​​DataX​​,一次填完所有的坑。

我使用的环境是(没必要安装​​python​​):

  • ​jdk1.8​
  • ​macos​​​操作系统(这个不重要,​​windows​​系统一样的操作)

02 IDEA下运行DataX

在​​IDEA​​下运行​​DataX​​,我们必须先知道流程,下面我画了一张流程图:

IDEA运行DataX完整流程(填完所有的坑)_ide

下面按步骤操作讲解。

2.1 步骤1:clone源码

​DataX​​​的源码地址:​​https://github.com/alibaba/DataX.git​

我们使用​​IDEA​​导入,“​​File - > New -> Project from Version Control...​​”:

IDEA运行DataX完整流程(填完所有的坑)_datax_02

输入源代码地址:

IDEA运行DataX完整流程(填完所有的坑)_maven_03

根据提示打开,等待依赖完成,直至导入完成,如果这里导入太慢,可以在​​maven​​里的​​settings.xml​​配置阿里云的镜像地址,如下:

<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

注意:如果项目提示某个包没有,可以不用管它,直接跳到下一步,因为这个包不一定是我们需要的。

2.2 步骤2:编译源码


想了解maven的assembly自定义打包的内容可以参考我的博客​​《Maven的三种打包方式(jar、shade、assembly)》​


注意​​DataX​​​使用的是​​assembly​​​自定义结构打包,所以可以使用命令打包,在项目根节点下,控制台运行​​maven​​脚本:

mvn clean package -DskipTests assembly:assembly

或者直接使用​​IDEA​​的按着​​control​​键选择​​clean​​(清理)和​​package​​(打包),然后​​Run Maven Build​​运行,等待编译。

IDEA运行DataX完整流程(填完所有的坑)_maven_04

编译完成后,我们可以看到项目目录即​​/core​​下生成了一个​​target​​文件夹,这个编译后的包里,我们需要的只有下面红框​​datax​​里面的内容。

IDEA运行DataX完整流程(填完所有的坑)_datax_05

为了方便理解,我把它编译后的​​datax​​文件夹复制到我的桌面(地址:​​/Users/用户名/Desktop/datax​​):

IDEA运行DataX完整流程(填完所有的坑)_大数据_06

2.3 步骤3:配置编译后的包

我们可以看到​​datax​​编译后的包里面的目录结构如下:

IDEA运行DataX完整流程(填完所有的坑)_大数据_07

我们需要配置的是​​conf​​文件夹里面的​​core.json​​文件里面的​​core.transport.speed.byte​​,只要不为​​-1​​就可以了,值可以任意写,如下图(如果这里不改,后续跑程序的时候会报错),我把​​byte​​设置为2000000了,表示单个​​channel​​的大小改为​​2MB​​:

IDEA运行DataX完整流程(填完所有的坑)_intellij idea_08

2.4 步骤4:复制用到的插件

到这里编译后的包配置完成了,我们看下​​job​​​文件夹下的​​job.json​​文件里面的内容:

{
"job": {
"setting": {
"speed": {
"byte":10485760
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
},
"content": [
{
"reader": {
"name": "streamreader",
"parameter": {
"column" : [
{
"value": "DataX",
"type": "string"
},
{
"value": 19890604,
"type": "long"
},
{
"value": "1989-06-04 00:00:00",
"type": "date"
},
{
"value": true,
"type": "bool"
},
{
"value": "test",
"type": "bytes"
}
],
"sliceRecordCount": 100000
}
},
"writer": {
"name": "streamwriter",
"parameter": {
"print": false,
"encoding": "UTF-8"
}
}
}
]
}
}

可以看到这是一个简单的​​job​​示例任务,用到了​​streamreader​​以及​​streamwriter​​插件,所以我们首先在存放在桌面的datax目录下,新建一个​​plugin​​目录。

IDEA运行DataX完整流程(填完所有的坑)_大数据_09

再回到我们的工程,我们把编译后的​​streamreader​​插件和​​streamwriter​​插件复制到我们的​​plugin​​目录:

IDEA运行DataX完整流程(填完所有的坑)_ide_10

复制后:

IDEA运行DataX完整流程(填完所有的坑)_大数据_11

2.5 步骤5:配置运行环境

注意datax的启动类在​​src/main/java/com/alibaba/datax/core/Engine.java​​类里面,我们打开这个类,在启动箭头里右键“Create "Engine.main()”,点击来配置运行环境:

IDEA运行DataX完整流程(填完所有的坑)_ide_12

点击打开后,配置界面如下:

IDEA运行DataX完整流程(填完所有的坑)_maven_13

只需要配置以上三项即可:

配置项

配置内容

描述

VM options

-Ddatax.home=/Users/用户名/Desktop/datax

datax编译后存放的地址

Program arguments

-mode standalone -jobid -1 -job /Users/yanglinwei/Desktop/datax/job/job.json

运行需要的参数

JRE

1.8

官方建议使用jdk1.8

2.6 步骤6:启动项目

直接右键Debug,如下图:

IDEA运行DataX完整流程(填完所有的坑)_intellij idea_14

可以看到没有报错,运行正常:

IDEA运行DataX完整流程(填完所有的坑)_intellij idea_15

下面详细把日志复制下来,具体的日志内容这里就不再详述了:

① 系统以及JVM的一些信息:

IDEA运行DataX完整流程(填完所有的坑)_intellij idea_16

② job配置打印:

IDEA运行DataX完整流程(填完所有的坑)_maven_17

③ 操作结果概览:

IDEA运行DataX完整流程(填完所有的坑)_maven_18

03 文末

本文主要讲解了​​IDEA​​​运行​​DataX​​的完整流程,有疑问的童鞋欢迎留言。