前言
ETL是数仓平台里面非常重要的一个组件,此前使用上海绎维公司的Fone产品,BS结构图形化界面操作,虽有一些功能操作不便,但总体来说还是可以轻松上手的,现在公司内部尝试自建数据平台,在ETL工具选择上面发现开源且有图形化界面的只有CS架构的Kettle,尝试过后发现还是有诸多不便,后来决定不强求图形化界面,试试阿里的DataX,毕竟大厂使用性能和稳定性应该还可以。
环境准备
DataX核心代码是java编写,使用入口是Python脚本,我们是从Github上下载源码,因此总结出需要准备的工具包括以下几个:
- Java运行环境,JDK 1.8以上版本;JDK安装和配置参考JDK安装与配置;
- Python环境,原厂是使用Python 2,安装和配置参考‘Windows10如何安装Python2’,网上提供了支持Python3的脚本可以替换,详情可以参考Python3启动DataX ;
- Git环境,用来克隆源码;GIT安装参考Git下载、安装与环境配置;
- Maven工具,用来打包源码;Maven安装参考Maven安装配置(Windows10);
部署测试
公司数仓用的是Greenplum,而原厂的DataX是使用PostgreSQL驱动连接Greenplum,PostgreSQL驱动写入数据采用的是insert模式,速度是GP诸多数据导入模式中最慢的一种,因此我们使用有Creenplum写入插件的HashDataInc公司的DadaX,其GP写入插件gpdbwriter采用的是Copy模式,速度相对insert有大幅度提升,HashDataInc公司的DadaX地址是:‘https://github.com/HashDataInc/DataX’。
首先进入Github页面克隆源码:
git clone https://github.com/HashDataInc/DataX.git
然后进入到克隆下来的datax目录使用maven工具打包:
$ cd {DataX_source_code_home}
$ mvn -U clean package assembly:assembly -Dmaven.test.skip=true
由于依赖包极多,因此打包过程比较长,我使用了一个多小时才下载完依赖包打包成功。
打包成功的结果在 {DataX_source_code_home}\target\datax-v1.0.4-hashdata\datax目录,内容如下:
进入到打包完后程序的bin目录,运行以下命令测试是否部署成功:
cd bin
python datax.py ../job/job.json
如果出现中文乱码,先输入CHCP 65001命令,然后再执行。