为了做大数据项目数据抽取工作,开始学习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
主要是找到pom.xml 打开IDEA,通过pom.xml先将project导入。
等待IDEA加载项目和依赖,dataX由于源码包含很多独立的reader和writer插件,默认全部加载会下载很对依赖包,慢慢等。
加载好之后应该像上图一样有很多module,拉到最下面找到pom.xml
用的保留,不用的注释掉,这样后续的测试编译打包过程都会变快很多。重点是个别module可能还存在找不到依赖jar的问题。。。不注释掉整体编译打包过程就会有报错。。。
下面开始检查依赖:项目依赖通过maven管理,操作说明在userGuid.md里,使用maven 的 assembly插件辅助打包。
最好本地安装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插件
IDEA的maven program中所有module报错(module变少了?是因为我只保留了需要的reader、writer及必要的核心module、公共module),点开发现是plugins缺少assembly。。。我不想对IDEA自带的maven做什么手工调整,直接切换到本地安装的maven。
settings里搜索maven,在user settings file右侧的 Override勾选后 里选择本地maven的settings.xml文件。下面的local repository会自动更新到本地maven库的。点击OK后IDEA中的当前project就切换到本地maven库了。
如果切换之后一帆风顺就去烧支香,如果像我一样出了新问题,那么恭喜你开始采坑:
我保留了hdfswriter插件,因为需要向hive中写入数据。Dependencies中出现找不到依赖的情况。点进去查看到底缺少什么,发现是两个jar包找不到:
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版本找不到
但是github上提供jar包下载,可以下载之后通过mvn指令导入到本地的maven库。
点jar下载到本地之后,cmd命令行到jar所在路径下 mvn install:install-file 指令把jar包打入本地maven下。
指令参数可以看我的博文;https://blog.csdn.net/qq_15903671/article/details/86624590
放进去之后就老实多了。至少这个pentaho不红了。然后再解决其他的
2.2.3 发现eigenbase-properties版本有问题
上图是IDEA找不到的maven依赖
上图是maven官网的情况,没有1.1.4版本。点击1.1.5
点击homePage右侧连接
好在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发现没有错误,但红线没消失)如下图所示
把pom里对应的denpendency剪切(ctrl+C 然后 ctrl+X)掉+保存+点击import Changes
然后再把dependency粘回去+保存+点击import Changes
红线没了,强迫症就会舒服很多。