DataX源码分析一:环境搭建

最近工作中使用到了DataX工具,比较肤浅的看了看源码,做一个记录。比较肤浅的探讨,各位莫见笑。

 

【1】获取源码

源码地址(github):git@github.com:alibaba/DataX.git

源码地址(gitee):git@gitee.com:mirrors/DataX.git

本人是从gitee上下载的源码。

git clone源码之后,使用IDEA导入工程,查看userGuid.md文件,按照文件中的说明进行编译,生成target目录。

本人编译时,一次通过,没有遇到麻烦。如果这里有问题,可自行百度解决。

 

 

【2】安装python

参照userGuid.md文件,datax是使用python datax.py xxxx的命令行启动的,需要安装python,本人直接下载的当前最新版本(截至2022-12-05)

下载地址:https://www.python.org/ftp/python/3.11.0/python-3.11.0-amd64.exe

安装过程省略,最后需要选中添加path的选项,此处安装时未截图。安装完成后,可使用命令进行测试(在编译出的target/bin目录,即datax.py脚本所在目录下测试):

python datax.py -r txtfilereader -w txtfilewriter

运行结果如下,则说明python安装成功,datax已经编译成功。

 

 

 

【3】编写job文件

编写一个job文件,运行datax。如下的配置文件,并不能正确运行,但是已经可以进入具体的执行插件。为方便测试,本人使用的是txtfilereader和txtfilewriter插件。

{
    "setting": {},
    "job": {
        "setting": {
            "speed": {
                "channel": 2
            }
        },
        "content": [
            {
                "reader": {
                    "name": "txtfilereader",
                    "parameter": {
                        "path": ["E:/personal/src/DataX/target/datax/tmp"],
                        "encoding": "UTF-8",
                        "column": [
                            {
                                "index": 0,
                                "type": "long"
                            },
                            {
                                "index": 1,
                                "type": "boolean"
                            },
                            {
                                "index": 2,
                                "type": "double"
                            },
                            {
                                "index": 3,
                                "type": "string"
                            },
                            {
                                "index": 4,
                                "type": "date",
                                "format": "yyyy.MM.dd"
                            }
                        ],
                        "fieldDelimiter": ","
                    }
                },
                "writer": {
                    "name": "txtfilewriter",
                    "parameter": {
                        "path": "E:/personal/src/DataX/target/datax",
                        "fileName": "target.txt",
                        "writeMode": "truncate",
                        "format": "yyyy-MM-dd"
                    }
                }
            }
        ]
    }
}
View Code

其中的文件,可自由创建,本人使用了以下内容:

 

 

 

执行该作业,得到大致以下输出(忽略红框内容):

 

 

 虽然未能生成结果文件,但是插件已经被执行。

 

 

【4】配置debug环境

为了在IDEA里调试代码,必须具备debug环境,而当前python运行的方式,是无法进入到debug环境中的。因此,对datax.py进行了修改,打印出命令行参数,配置到了IDEA中。

如下图,仅在datax.py第236行,加了打印。235行的日志,都是原代码里的。

 运行后,会得到上一步骤图中红框的内容,即datax运行的命令行参数。有了参数,就可以配置到IDEA中,并在IDEA环境下运行datax。

下面是本人截取的命令行参数:

-server 

-Xms1g -Xmx1g -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=E:\personal\src\DataX\target\datax/log -Xms1g -Xmx1g -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=E:\personal\src\DataX\target\datax/log -Dloglevel=info -Dfile.encoding=UTF-8 -Dlogback.statusListenerClass=ch.qos.logback.core.status.NopStatusListener -Djava.security.egd=file:///dev/urandom -Ddatax.home=E:\personal\src\DataX\target\datax -Dlogback.configurationFile=E:\personal\src\DataX\target\datax/conf/logback.xml -classpath E:\personal\src\DataX\target\datax/lib/*  -Dlog.file.name=tax\job\filejob_json 

com.alibaba.datax.core.Engine 

-mode standalone -jobid -1 -job E:\personal\src\DataX\target\datax\job\filejob.json

 其中,-server参数配置时报错,将其去除后,并未发现影响,因此先将其去除,在以后调试过程中如果发现需要该参数,再查找对应的配置。

 IDEA配置过程,注意看红框内的配置即可。

 

 

【5】debug

通过刚才的参数也可以看到,启动类是 com.alibaba.datax.core.Engine ,找到该类,打上断点。点debug按钮,进行debug:

 

 可看到,顺利的进入了debug模式。

 

至此,datax源码的debug环境搭建完成。后续将以txtfilereader、txtfilewriter为例,进行浅显的datax源码分析。

 

posted @ 2022-12-05 19:29  纯粹的开发者  阅读(1473)  评论(0)    收藏  举报