当前位置:网站首页 / ETL / 正文

[AY]写给自己的Kettle笔记9

时间:2019年02月21日 | 作者 : aaronyang | 分类 : ETL | 浏览: 3334次 | 评论 0

====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========

35 作业->FTP上传/下载

在作业里,有很多功能

FTP上传

image.png

然后设置文件

image.png

文件传输里还有很多

image.png

FTP下载

image.png

FTP删除

image.png

FTPS的上传,其他几个自己看

image.png




36 全局变量

在用户的.kettle文件夹下有个kettle.properties

image.png

记事本打开,编写全局变量

image.png

然后保存,重启spoon

拖一个获取变量

image.png

然后写日志,测试结果,可以拿到全局变量了

image.png

测试数据库连接

image.png

很神奇的是,密码那里,我输入的是 ${DBPWD} 竟然也可以





37 自己看下日志方面的,集群,大数据方面的应用吧,到此ay写差不多了,不想研究了。


====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========

1.尽量使用数据库连接池

2. 尽量提高批处理的commit size

3. 尽量使用缓存,缓存尽量大一些(主要是文本文件和数据流)

4. Kettle 是Java 做的,尽量用大一点的内存参数启动Kettle.

5. 可以使用sql 来做的一些操作尽量用sql 

6. Group , merge , stream lookup ,split field 这些操作都是比较慢的,想办

法避免他们.,能用sql 就用sql

7. 插入大量数据的时候尽量把索引删掉

8. 尽量避免使用update , delete 操作,尤其是update , 如果可以把update 

变成先delete , 后insert .

9. 能使用truncate table 的时候,就不要使用delete all row 这种类似sql

10. 合理的分区

11. 如果删除操作是基于某一个分区的,就不要使用delete row 这种方式(不

管是delete sql 还是delete 步骤),直接把分区drop 掉,再重新创建

12. 尽量缩小输入的数据集的大小(增量更新也是为了这个目的)

13. 尽量使用数据库原生的方式装载文本文件(Oracle 的sqlloader , mysql 的

bulk loader 步骤)

14. 尽量不要用kettle 的calculate 计算步骤,能用数据库本身的sql 就用sql ,不

能用sql 就尽量想办法用procedure , 实在不行才是calculate 步骤


执行效率和复杂度 :

 删除和更新都是一项比较耗费时间的操作,它们都需

要不断的在数据库中查询记录,执行删除操作或更新

操作,而且都是一条一条的执行,执行效率低下也是

可以预见的,尽量可能的缩小原数据集大小。减少传

输的数据集大小,降低ETL的复杂程度

 时间戳方法的一些优点和缺点:

 优点: 实现方式简单,很容易就跨数据库实现了,运

行起来也容易设计

 缺点: 浪费大量的储存空间,时间戳字段除ETL过程

之外都不被使用,如果是定时运行的,某一次运行失

败了,就有可能造成数据有部分丢失


kettle没有事务


双击一个转换中可以设置"杂项"中选中“使用唯一连接”,表示

该转换和数据库是一个session,有多个分支的话,执行失败数

据就会回滚


遇到“只有一个输入记录期待设置变量并且至少已经收到2个变

量.”的问题:这个问题是我在表输入的时候给sq一次l传入了多

个值(相当于多条记录的id值),然后在更新完表之后又设置了

“设置变量”,这时候由于一次查出多条记录,“设置变量”里

不知道到底去取这些记录的哪条里的信息,所以会报这个错。

② 在写kettle脚本的时候遇到最多的问题就是类型转换问题,如:

"java.sql.Timestamp cannot be cast to java.lang.Long“

,这是日期字段不为空没问题,但是有值就会报这个转换问题;

或者Unexpected conversion error while converting value 

[N_YSFJFJ Integer(9)] to an Integerjava.math.BigDecimal 

cannot be cast to java.lang.Long

这类问题都是在要“更新/插入”之前使用了多个”表输入“来

传值,貌似在传值的时候都将字段对应的值默认转为integer类

型的,所以要解决这类转换问题,要么在“更新/插入”的前一

个步骤添加js控件来强制转换所有可能出现问题的字段,要么在

”表输入“中的sql语句中使用case when 或者convert












推荐您阅读更多有关于“kettleetl,”的文章

猜你喜欢

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  查看权限

合肥科大智能常年招聘.NET,Java,Web前端,有想找想换工作的私聊我AY唯一QQ:875556003和AY交流

抖音号:wpfui,可以看到我的很多作品效果

AYUI8社区版Github地址:前往获取

作者:杨洋(AaronYang简称AY,安徽六安人)目前是个人,还没公司AY唯一QQ:875556003和AY交流

高中学历,2015年1月17日开始,兴趣学习研究WPF,目前工作繁忙,不接任何活

声明:AYUI7个人与商用免费,源码可购买。部分DEMO不免费.AY主要靠卖技术服务挣钱

不是从我处购买的ayui7源码,我不提供任何技术服务,如果你举报从哪里买的,我可以帮你转正为我的客户,并送demo

查看捐赠

AYUI7.X MVC教程 更新如下:

第一课 第二课 程序加密教程

vs2015 企业版密钥HM6NR-QXX7C-DFW2Y-8B82K-WTYJV

vs2017 企业版密钥NJVYC-BMHX2-G77MM-4XJMR-6Q8QF

标签列表