DataX Transformer
Transformer定义
在数据同步、传输过程中,存在用户对于数据传输进行特殊定制化的需求场景,包括裁剪列、转换列等工作,可以借助ETL的T过程实现(Transformer)。DataX包含了完整的E(Extract)、T(Transformer)、L(Load)支持。
源程序下载后,在 \core\src\main\java\com\alibaba\datax\core\transport\transformer 文件夹下,有几个原生的转换器
- 截取SubstrTransformer
- 填充PadTransformer
- 替换ReplaceTransformer
- 过滤FilterTransformer
- Groovy类型GroovyTransformer
打开 TransformerRegistry.java 可以看见,这些转换器都被注册了的。
如果想要添加自定义转换器,需要在该文件夹里再新建一个类,同时把它注册到 TransformerRegistry.java 里。
于是我们在idea里打开这个项目,嗯,麻烦开始了。
DATAX编译
初次下载未编译的状态下,这个项目各种报红,无论是在idea里狂按clean和install,还是在项目文件夹下 cmd 编辑框里输入:mvn -U clean package assembly:assembly -Dmaven.test.skip=true,提示总会出现各种找不到,一会儿找不到插件,一会儿找不到jar包,一会儿又结构性报错,哪怕我重新建一个maven库,自己从网上下,好不好?
最后还是有两个jar包提示找不到:
pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar
eigenbase-properties-1.1.4.jar
因为这个错误报的太奇葩我忘了截图,反正就是说这两个jar包 maven.aliyun.com/repository/public 上找不到。
阿里云公共仓库哭了:你才找不到!
非但如此,我本地仓库里明明也下载了这两个jar包:
哭死我了。
试了一堆办法都没用,于是我只好……呃,又下了个编译好的DATAX,解压缩后先试了试,发现能用,然后lib文件夹里捞出这两个jar包,手动添加到本地仓库:
在cmd编辑框下输入:
mvn install:install-file -DgroupId=org.pentaho -DartifactId=pentaho-aggdesigner-algorithm -Dversion=5.1.5-jhyde -Dpackaging=jar -Dfile=E:/code/jars/pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar
mvn install:install-file -DgroupId=eigenbase -DartifactId=eigenbase-properties -Dversion=1.1.4 -Dpackaging=jar -Dfile=E:/code/jars/eigenbase-properties-1.1.4.jar
然后,小心翼翼地输入:
mvn -U clean package assembly:assembly -Dmaven.test.skip=true
按下回车。当一堆SUCCESS在我眼前不断跳动时,我的心也渐渐提到嗓子眼儿,不到最后关头都有fail的可能,别高兴得太早,希望越大失望越大,碎碎念。
啊,美如画!
对了,听我同事说,换maven能解决,不过要换成3.8.8的,我的maven是3.9.5的,已经哭不出来了。
Transformer自定义插件添加
编译成功,已经是万里长征走完了99%,下面就编写插件吧,这是我写的一个关于获取经纬度的插件。
别忘了注册:
而后编译,找到target目录,里面就是编译好的DATAX工具,可以直接使用。
在job.json里,writer节点下面加:
运行结果:
结语
短期内,我不想用它了,看到就反胃。