kettle之gpload组件使用

KETTLE使用GPLOAD组件

Greenplum已经很少人用了,最近新项目要用这个的时候发现网上资料不多,尤其是kettle+gp的组合。所以最后经过几天加班才研究出来,特地记录一下。
这里用的kettle是最新的版本kettle9.0.0.0-423; greenplum是6.0.1的;gp安装在linux上的虚拟机上,这里说写merge模式的。
首先为什么要用gpload这个组件呢,是因为开始用kettle的表输出和插入更新这两个组件来把MYSQL的数据抽到greenplum里,速度实在是慢到接受不了,后面用Postgresql批量加载这个组件发现快了很多,但这个组件只有插入和清空,并没有更新。
gpload组件的流程大概是把数据先放到本地文件,通过greenplum的gpload命令用外部表的形式批量加载数据到数据库去吧;以下是gpload组件的设置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以上配置都使用了很多参数,这些都是为了在开发环境和生产环境使用的,除了几点说明以外其他无关重要:
1)图一的IP指向的是这个kettle转换要在哪个机器上运行,并且端口是该机器上对应的greenplum客户端的端口;
2)图二中Path to the gpload指向的是gpload.py这个脚本的路径,这个python脚本在greenplum安装目录下的bin目录里,另外这个目录下还有一个gpload.bat(windows环境)或者是gpload.sh(linux环境)的说明文件,会提示需要安装什么版本的python才可以。
3)如果需要在windows环境下运行,需要把图二中的Crontrol file文件的后缀由cfg改为yml,因为greenplum中自带有一个yaml的文本解释器;

上面说了这个组件是需要调用gpload命令把文件数据插入到数据库的,所以不可避免涉及到两个问题:空值和特殊字符。
1)空值的问题由于kettle这个版本的问题,上面组件里的NULL AS并没有生效,所以不用填上面这个,并且需要修改gpload.py这个脚本,修改以下这个地方之后,就可以把字段里的空值当作NULL插入到库里了:
在这里插入图片描述
2)特殊字符问题,我是用以下两个组件实现的,JS脚本是把换行符这些处理了,另一个Replace in string 组件是处理|,,/这些字符的。

在这里插入图片描述
在这里插入图片描述
ps:1)需要使用gpload还要启动gpfdist服务
2) merge模式下的greenplum建表不能有主键或唯一索引,只能建普通索引,需要指定是随机分布。(这个还没有想明白原理是什么)

参考文章:https://blog.csdn.net/u012878005/article/details/81237234

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值