失败处理:
- 测试资源库是否可以连接
- Ping一台主机检查是否可以连接
- 以返回行数为条件判断SQL语句运行成功或失败
- 检查文件目录是否为空
- 检查文件、数据库表、表的列是否存在。
- 文件和目录的比较
- 设置FTP和SSH连接超时
- 每一个作业项执行后,都有成功或失败的输出。
增量数据捕获CDC
ETL:从不同的源刺痛中抽取数据,把数据传递到流程的下一个步骤。把从源系统中抽取出的数据放在缓冲的数据库表活文件中作为中间存储层(这个作为中间存储层的数据库表和文件就是数据缓冲区)。
辨别出那些数据发生变化,并抽取那些自上次抽取后发生变化的数据的过程就被称为增量数据捕获,也叫CDC.
数据分析:
NULL或空值的个数。不同的值的个数。最小、最大、平均值(数值字段)
最小、最大、平均长度(字符串字段) 正则表达式。数据的分布。
ETL工具的功能
并发:ETL过程能够同时处理多个数据流,以便利用现代多核的硬件架构。
分区:ET能够使用特定的分区模式,将数据分发到并发的数据流中。
集群:ETL过程能够分配在多台机器上联合完成。
转换里的每个步骤都是以并发的方式来执行,并且可以执行多次,这样加快了处理速度。
kettle有两种基本发送方式:分发和复制。分发类似发扑克牌,一轮流的方式将每行数据只发给一个数据流。复制是将同一特征的数据发送到同一个数据流。
转换:处理抽取、转换、加载各阶段个中对数据行的操作。如:读取文件、过滤输出行、数据清洗或将数据加载到数据库。
在kettle中,数据的单位是行。
一个步骤的数据发送可被设置为轮流发送和复制发送。轮流发送是将数据行依次发给每一个输出跳,复制发送是将全部数据行发送给所有输出跳。
可以用xml来表示转换和作业。
连接和事务:数据库连接只在执行作业或转换使用。在作业里,每一个作业项都打开和关闭一个独立的数据库连接。转换也是如此。但是因为转换里的步骤是并行执行的,每个步骤都打开一个独立的数据库连接并开始一个事务。
kettle可以在一个事务中完成转换。转换设置对话框的选项“转换放在数据库事务中”可以完成功能。当选中了这个选项,所有步骤里的数据库连接都使用同一个数据库连接。只有所有步骤都正确,转换正确执行,才提交事务,否则回滚事务。
快捷键:Ctrl+空格 显示出当前kettle里所有变量的列表。
变量使用${}引用。
windows下运行spoon.bat脚本。在unix下使用spoon.sh
作业服务器Carte:当Carte在运行时,一直在某个端口监听http请求。
encr.bat和encr.sh:用于加密密码。
kettle安装目录下有一个jdbc.properties文件,保存在simple-jndi目录下。这个文件用来存储jndi连接对象的连接参数。kettle可以用jndi的方式来引用jdbc连接参数,如ip地址、用户认证,这些参数最终用来转换和作业中构造数据库连接对象。
在jdbc.properties里定义的连接可以在转换和作业里使用要定时备份。
另外在部署时注意:在部署使用jndi方式的转换和作业时,记住需要更改部署环境里的jdbc.properties文件。
在开发时使用开发库,上线使用实际生产数据库。使用jndi的好处就是部署时不用在更改转换和作业,只需要更改jdbc.properties里的连接参数。
kettle.properties:全局的字符串变量。保存数据库连接参数,保存文件路径,或保存一个用在某个转换里的常量。