Kettle 调优 (使用阻塞组件的同时数据量大)

一、概述

        之前文档中  https://blog.csdn.net/qq_35995514/article/details/106856885  讲了 一个 Kettle 同步的程序 ,程序设计好了目前拉倒线上测试不行了,程序跑到文本文件输入卡住了。

 

二、kettle步骤通信

kettle调优中有个重要的参数:记录集合里面的记录数。

 

 

该数量是指组件与组件之间通信的【缓存队列】的size大小,Kettle内部用List实现该缓存队列,每一条语句都会被封装成一个 RowSet对象,每个组件之间都会有个List<RowSet>队列,源step每次会往该队列写一条数据,目标step每次会从队列读取一条数据。

kettle里面转换是并行的,数据是一条一条流经每个组件,队列大小采用默认的10000条即可。

但是当使用到【阻塞数据直至步骤完成】、【阻塞数据】相关组件时,则需要根据业务数据量扩大该size的大小。

否则,数据会一直在某两个组件之间的缓存队列中存放,当数量达到一定大小时,就会卡主不动。

缓存队列的大小对作业没有影响,查看源码发现,缓存队列由inputRowSet 和 outputRowset组成,底部实现是ArrayList,初始化创建的时候,默认容量为10,并不会直接创建设定长度的 数组。并且使用ArrayList的特性:当要添加的数据量超过数组的容量时候,ArrayList会动态扩容,size扩大1.5倍

 

问题:考虑到后面数据量会比较大或数据积压,会将 Kettle程序数据处理流程优化, 或者采用代码实现数据的ETL

评论 10 您还未登录,请先 登录 后发表或查看评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页

打赏作者

开着拖拉机回家

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值