目录
本文基于Pentaho的kettle模块实现ETL功能,在spoon中实现创建、定义作业,记录作业job的两种处理并行作业项的方法。
1. kettle简介
1.1 Pentaho、kettle、Spoon
Pentaho是一个以工作流为核心的、强调面向解决方案的开源商业智能(Business Intelligence, BI)套件,以构成全面的数据集成和业务分析平台。这些套件各自为独立产品,之间为松耦合可插拔式设计,用户可根据自身需求进行灵活选择。Kettle是Pentaho整个产品体系中的数据集成模块,使用突破性的元数据驱动方法提供强大的“提取,转换和加载(ETL)”功能。主要使用在数据仓库环境下,同时还可以:在应用程序或数据库之间进行数据迁移、将数据从数据库中导出到文本文件中、将大量数据加载到数据库中、数据清理、应用程序集成等。作为最受欢迎的开源ETL工具,其支持大量的输入和输出格式,包括文本文件、数据表,以及各类商业或开源的数据库引擎。除此之外,Kettle还易于使用,用户可通过图形化界面Spoon定义任务或转换,无需编写代码。当然,Kettle支持用户使用脚本语言定义更加丰富的个性化功能。
1.2 kettle的作业(Job)
转换(Transformation) 和 作业(Job)是Spoon设计器的核心两个内容,这两块内容构建了整个Kettle工作流程的基础。
参考链接:Kettle的控件分为2种:作业(Job)和转换(Transform)
本文围绕作业(Job)展开。一个作业包括一个或多个作业项,作业项之间用跳(Job Hop)来连接。作业的执行顺序由跳,以及每个作业项的执行结果来决定,用户可以自定义。
针对作业项的执行结果,作业跳有以下情形:
无条件执行,无论上一个作业项执行成功与否,下一个作业都会执行,如上图,为其中蓝色带锁的连接线;
当运行结果为真时执行,当上一个作业项执行成功时,才执行下一个作业项,如上图,为其中绿色带对号的连接线;
当运行结果为假时执行,当上一个作业项执行失败时