大数据学习——dataX工具部署和源码编译

为了做大数据项目数据抽取工作,开始学习dataX,尝试比较dataX(版本 3.0)与sqoop的功能与性能差异。以下教程包括:

下载dataX工具及简要使用、下载dataX源码尝试编译及遇到的问题、尝试改造开源项目dataX

一、下载dataX工具及简要使用

gitHub下载(在下面的README里,Quick Start栏中):https://github.com/alibaba/DataX

阿里云下载:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

百度网盘备份:链接:https://pan.baidu.com/s/1gI89MiKtwFC0H4PCiInYPw 提取码:v9g5

操作说明参考gitHub上的README.md 

二、下载dataX源码尝试编译及遇到的问题

gitHub下载(版本可能会持续更新):https://github.com/alibaba/DataX

百度网盘备份:链接:https://pan.baidu.com/s/1gI89MiKtwFC0H4PCiInYPw 提取码:v9g5  

开发环境:win10 + IDEA + python2.7 + java JDK1.8

2.1 下载源码加载到IDEA

大数据学习——dataX工具部署和源码编译

大数据学习——dataX工具部署和源码编译

主要是找到pom.xml  打开IDEA,通过pom.xml先将project导入。

大数据学习——dataX工具部署和源码编译

大数据学习——dataX工具部署和源码编译

大数据学习——dataX工具部署和源码编译

大数据学习——dataX工具部署和源码编译

等待IDEA加载项目和依赖,dataX由于源码包含很多独立的reader和writer插件,默认全部加载会下载很对依赖包,慢慢等。

大数据学习——dataX工具部署和源码编译

加载好之后应该像上图一样有很多module,拉到最下面找到pom.xml

大数据学习——dataX工具部署和源码编译

用的保留,不用的注释掉,这样后续的测试编译打包过程都会变快很多。重点是个别module可能还存在找不到依赖jar的问题。。。不注释掉整体编译打包过程就会有报错。。。

下面开始检查依赖:项目依赖通过maven管理,操作说明在userGuid.md里,使用maven 的 assembly插件辅助打包。

大数据学习——dataX工具部署和源码编译

最好本地安装maven工具以方便使用不同的mvn指令参数进行打包和调试,IDEA自带的maven使用上是可视化配置,但教程里用的都是mvn指令+参数的方式,要自己翻译。。。

windows安装maven可参考我的博客https://blog.csdn.net/qq_15903671/article/details/81702346

当然使用maven打包前还是需要在IDEA下检查一下,可视化工具在检查方面还是非常有优势的。下面就开启采坑之旅:

2.2 IDEA下检查dataX依赖的采坑之旅

2.2.1 IDEA自带maven找不到assembly插件

大数据学习——dataX工具部署和源码编译

IDEA的maven program中所有module报错(module变少了?是因为我只保留了需要的reader、writer及必要的核心module、公共module),点开发现是plugins缺少assembly。。。我不想对IDEA自带的maven做什么手工调整,直接切换到本地安装的maven。

大数据学习——dataX工具部署和源码编译

大数据学习——dataX工具部署和源码编译

settings里搜索maven,在user settings file右侧的 Override勾选后 里选择本地maven的settings.xml文件。下面的local repository会自动更新到本地maven库的。点击OK后IDEA中的当前project就切换到本地maven库了。

如果切换之后一帆风顺就去烧支香,如果像我一样出了新问题,那么恭喜你开始采坑:大数据学习——dataX工具部署和源码编译

我保留了hdfswriter插件,因为需要向hive中写入数据。Dependencies中出现找不到依赖的情况。点进去查看到底缺少什么,发现是两个jar包找不到:

大数据学习——dataX工具部署和源码编译

org.pentaho:pentaho-aggdesigner-algorithm:5.1.5-jhyde

eigenbase:eigenbase-properties:1.1.4

到Maven官网上找这两个jar包的maven依赖

https://mvnrepository.com/artifact/org.pentaho/pentaho-aggdesigner-algorithm/5.1.5-jhyde

https://mvnrepository.com/artifact/net.hydromatic/eigenbase-properties

2.2.2 发现pentaho版本找不到

大数据学习——dataX工具部署和源码编译

但是github上提供jar包下载,可以下载之后通过mvn指令导入到本地的maven库。

大数据学习——dataX工具部署和源码编译

点jar下载到本地之后,cmd命令行到jar所在路径下 mvn install:install-file 指令把jar包打入本地maven下。

指令参数可以看我的博文;https://blog.csdn.net/qq_15903671/article/details/86624590

大数据学习——dataX工具部署和源码编译

放进去之后就老实多了。至少这个pentaho不红了。然后再解决其他的

2.2.3 发现eigenbase-properties版本有问题

大数据学习——dataX工具部署和源码编译

上图是IDEA找不到的maven依赖

大数据学习——dataX工具部署和源码编译

上图是maven官网的情况,没有1.1.4版本。点击1.1.5

大数据学习——dataX工具部署和源码编译

点击homePage右侧连接

大数据学习——dataX工具部署和源码编译

好在github上还有源码。点击Clone or download把源码搞下来

cmd命令行到源码位置  mvn clean package 生成jar包。在源码目录下会生成target目录,里面可以看到jar包。

有意思的是,我现在下载的源码已经是1.1.6版本了。。。

干脆使用mvn install:install-file 指令把这个jar包导入到maven的eigenbase:eigenbase-properties:1.1.4中。相信1.1.6应该会向下兼容1.1.4吧。至于为什么不把依赖版本改成1.1.6。。。当你发现有多少个jar依赖这个eigenbase之后就会放弃这个想法。

2.2.4 IDEA也有反映迟钝的情况(缓存可加速,但发生一致性问题时就会变迟钝)

在本地maven补充上缺少的依赖后,如果IDEA还是提示红色(clean+install发现没有错误,但红线没消失)如下图所示

大数据学习——dataX工具部署和源码编译

把pom里对应的denpendency剪切(ctrl+C 然后 ctrl+X)掉+保存+点击import Changes

大数据学习——dataX工具部署和源码编译

然后再把dependency粘回去+保存+点击import Changes

大数据学习——dataX工具部署和源码编译

红线没了,强迫症就会舒服很多。