天天看点

Kettle连接Phoenix从Oracle同步数据到Phoenix大数据平台一些问题记录

连接配置:

Kettle连接Phoenix从Oracle同步数据到Phoenix大数据平台一些问题记录

如果报的phoenix.schema.isNamespaceMappingEnabled错:

Kettle连接Phoenix从Oracle同步数据到Phoenix大数据平台一些问题记录

由于Kettle并不支持Phoenix 的upsert语法,需要修改源码支持

下载对应自己kettle的源码https://github.com/pentaho/pentaho-kettle/releases

Kettle的源码中包含自动测试的代码,我们本地并没有测试需要的环境,先要删除这些测试代码,才能正常编译通过

下面的图展示的只是其中一个插件项目的目录结构,作为实例需要删除it、test这两个中的内容(文件和文件夹),像这样找到所有的测试代码删除即可(有好多子项目中都有测试,需要删干净,如果报*/test/下的错就是没删干净)。

Kettle连接Phoenix从Oracle同步数据到Phoenix大数据平台一些问题记录

kettle依赖的一些库并不能通过maven中心库下载,需要从它自己的库下载

如以下链接的这几个文件(*.pom,*.jar,*.sha1...),可以mvn clean查看缺少什么,根据报错信息在库中下载好后,放到本地maven库中

https://nexus.pentaho.org/#browse/browse:omni:org%2Fhitachivantara%2Fkaraf%2Ftooling%2Fkaraf-maven-plugin%2F4.2.6-R2%2Fkaraf-maven-plugin-4.2.6-R2.pom

准备工作做好后就可以尝试改源码了。

要修改的目标源码位置:pentaho-kettle\core\src\main\java\org\pentaho\di\core\database\Database.java

修改源码可以用记事本,但用其他ide有代码提示,Database.java中搜索 "INSERT INTO ,有两处需要修改:

Kettle连接Phoenix从Oracle同步数据到Phoenix大数据平台一些问题记录
Kettle连接Phoenix从Oracle同步数据到Phoenix大数据平台一些问题记录

Database.java中搜索 "UPDATE ,有一处需要修改(其他几处看着像是日志或者其他的暂不修改,报错再改):

Kettle连接Phoenix从Oracle同步数据到Phoenix大数据平台一些问题记录

编辑好之后,保证修改的代码没有编译错误,在kettle目录下执行mvn install(先mvn clean下)

Kettle连接Phoenix从Oracle同步数据到Phoenix大数据平台一些问题记录

编译好之后把pentaho-kettle\core\target\classes\org\pentaho\di\core\database\Database.class文件替换到pdi-ce-9\data-integration\lib\kettle-core-9.*.jar

的对应目录下(我用开源的压缩软件7-zip替换,其他压缩软件未测试)。

覆盖class文件完成后,重新运行kettle,定义转换,执行,插入和更新都可以了,如果发现问题再修改,再更新此文。

Kettle连接Phoenix从Oracle同步数据到Phoenix大数据平台一些问题记录

修改源Oracle库的一条数据

Kettle连接Phoenix从Oracle同步数据到Phoenix大数据平台一些问题记录

再次执行,去phoenix中查看

Kettle连接Phoenix从Oracle同步数据到Phoenix大数据平台一些问题记录

继续阅读