kettle组件开发小结
来源:互联网 发布:找不到usb打印机端口 编辑:程序博客网 时间:2024/05/16 05:46
kettle是一款优秀的开源ETL工具,它本身提供了丰富的组件去做数据库数据抽取、清洗和转换等一些操作,但并不是对所有的情况它都能满足。当kettle本身的组件不满足你的要求时,就需要自己开发一些组件,那么怎么去开发一个组件呢?下面我们来看一下。
kettle组件涉及的类
我们说的kettle组件就是一个step,它有四个类构建而成,每个类职责不同,各司其职。
BaseStep:步骤类,实现了StepInterface接口,它是每个组件实际的业务处理类,组件的功能在这个类里实现。
BaseStepMeta:步骤元数据类,实现了StepMetaInterface接口,它的职责是保存和序列化组件的配置。
BaseStepData:步骤数据类,实现了StepDataInterface接口,用于存放每个组件在执行过程中的数据。
BaseStepDialog:步骤界面类,实现了StepDialogInterface接口,实现组件和用户进行交互的界面,提供一个对组件进行配置的界面。
个人认为,以上四个类说白了BaseStepDialog就是要用来设计组件的界面,定义组件有哪些属性和配置,用户通过这个界面配置好组件后,BaseStepMeta会把组件的配置进行持久化操作,保存到数据库和xml文件中。组件执行时,实际上就是执行BaseStep类,这个类去读取组件的配置信息,并依据配置信息完成相应的业务逻辑,BaseStepData在执行时可以缓存一些全局的数据。下面是这四个类的一些重要的方法的说明。
BaseStep:
//初始化步骤类,可以去获取组件的配置信息,并对配置信息进行数据校验。
public boolean init(…)
//步骤执行完后释放资源,如数据库连接等
public void dispose(..)
//业务处理方法,实现组件的功能
public boolean processRow(..)
BaseStepMeta:
// keep track of the step settings
public String getOutputField()
public void setOutputField(…)
public void setDefault()
// serialize the step settings to and from xml
public String getXML()
public void loadXML(…)
// serialize the step settings to and from a kettle repository
public void readRep(…)
public void saveRep(…)
// provide information about how the step affects the field structure of processed rows
public void getFields(…)
// perform extended validation checks for the step
public void check(…)
// provide instances of the step, data and dialog classes to Kettle
public StepInterface getStep(…)
public StepDataInterface getStepData()
public StepDialogInterface getDialog(…)
BaseStepData:
主要存放缓存数据,自己发挥。
BaseStepDialog:
使用swt在open(..)方法里进行界面设计,自己发挥吧。
对这四个类有了初步的了解之后,我们来看看怎么去开发自己的组件。
首先,我们要创建四个类,类名要遵循kettle约定类得命名规则,如:假设步骤类类名为Compress,那么元数据类为CompressMeta,数据类为CompressData,界面类为CompressDialog。这四个类分别继承BaseStep、BaseStepMeta、BaseStepData、BaseStepDialog类。
接下来分别去实现这些个类的主要方法,这里不再多说。下节我会说一些组件开发中遇到的问题。
- kettle组件开发小结
- Flex组件开发阶段小结
- kettle开发
- kettle组件的效率
- kettle组件学习
- KETTLE公式组件学习
- kettle常用组件
- Kettle行转列组件
- Kettle之Eclipse搭建Kettle开发环境
- kettle plugin 插件开发
- kettle 开发总结
- Kettle plugin 插件开发
- kettle-插件开发
- kettle的api开发
- Kettle插件开发流程
- 数据迁移之Kettle的使用小结
- kettle执行前修改组件参数
- 使用javascript访问kettle内部组件
- 文件格式解析:ISO9660 (ISO文件) -- Python
- Android 使用全局变量
- 跟我一起学makefile 和make manual
- JS 中如何将字符串转换成数字
- NSThread 创建线程和更新UI
- kettle组件开发小结
- Windows 7英文版访问2003或XP共享时提示用户名密码错误的解决办法
- ORA-01691: Lob 段 INSPECT.SYS_LOB0000052587C00011$$ 无法通过 8192 (在表空间 USERS 中) 扩展
- Could not find default endpoint element that references contract 'wcfXXXXXXXXXXX' in the ServiceMode
- 内部类(补充)
- C中fopen的mode参数中,b的使用区别
- magento在同一个页面实现登陆注册
- 岁月
- CTL_CODE 定义说明(重要理解内容)