
1 、背景 摘要
微信公众号、知乎和稀土掘金,主体均为“以数据之名” 欢迎扫码关注,回复「666」加入“以数据之名”微信交流群 本文由以数据之名分享,正所谓“道阻且长,行则将至;行而不辍,未来可期”。不知不觉中,“以数据之名”Kettle知识库专题文章“三十而立、四十不惑、五十而耳知天命、六十而耳顺、七十古稀、八零年代、九零新秀、零零后浪”,叙述了使用Kettle作为ETL开发的常见组件使用说明、业务场景实现逻辑、异常分析及组件性能优化相关内容。后续,我们跟着小编的节奏,尽量做到Kettle知识库问答系列之每日一问,做到理念和实践的生动统一。

2 、Kettle 性能 探索
2.1 第99问
Kettle为什么150w条数据用表输出这么慢啊?就一个很普通的“查询+输出”,目标表只有主键也没有索引。
2.2 第99答
这种场景大致几个调优方向:
1、表已建好索引,插入受索引重排影响,这是客观事实;
2、输入和输出组件的jdbc连接配置参数调优,调整批量提交参数等,可以参考之知识库文章;
3、表输入查询优化,比如查询条件执行计划和索引使用排查;
4、适当提高commit size,减少提交次数;
5、输出端开多线程并发复制模式,提高并发写入效率;
6、数据库服务端参数调优;
7、减少数据流字段,非必要不传递;
8、jvm系统参数调优;
9、kettle自带参数杂项调优。
10、输入端数据拆分调优,实现输入多线程并行查询,请参考文章:Kettle知识库问答系列之六十而耳顺

3 、Kettle 问题 探索
3.1 第100问
请问如何用Kettle把文件夹下所有excel批量导入数据库的一个表中,数据库表包含全部字段,这些excel表只包含部分字段,并且每个excel表包含的字段不同,顺序不同。
3.2 第100答
这种场景有两个思路,从元数据操作角度分析如下:
一、元数据遍历操作:
1、首先定义好目标模型的全部元数据信息【c1、c2、……】;
2、excel输入时不指定字段,会自动获取对应sheet的所有字段;
3、java脚本动态获取数据流字段信息;
4、遍历数据流字段信息时与1定义的元数据集合做比对,不存在则增加缺失元数据;
5、字段选择调整元数据数据流顺序与数据库目标表一致;
6、表输出不指定字段映射,自动按顺序映射写入数据。
二、元数据注入操作:
感谢@全若提供,元数据定义完,直接用元数据注入到excel输入组件里,这样就不用后面的步骤了。
4 、 Kettle 专题推荐
Kettle插件开发之KafkaConsumerAssignPartition篇
小编心声
虽小编一己之力微弱,但读者众星之光璀璨。小编敞开心扉之门,还望倾囊赐教原创之文,期待之心满于胸怀,感激之情溢于言表。一句话,欢迎联系小编投稿您的原创文章!
欢迎关注,快乐交流,共同成长




