1、kettle插件是什么

kettle本身有足够多的转换或者job步骤,但是依然不能覆盖所有的业务场景,所以Kettle 自定义插件在有些独特的业务场景可以大显身手。

Kettle的插件架构使得我们可以不用修改Kettle本身代码,通过一些独立的代码就可以扩展Kettle的功能。这些独立的代码称为插件。Kettle可动态加载并运行这些插件。

2、kettle插件类型

  1. 转换步骤插件:在Kettle转换中使用的步骤,用来处理数据行。
  2. 作业项插件:在Kettle作业中使用的作业项,用来实现某个任务。
  3. 分区方法插件:利用输入字段的值指定自己的分区规则。
  4. 数据库类型插件:用来扩展不同的数据库类型。

3、kettle插件架构

Kettle内部的对象与外部插件没有任何区别,因为他们使用的API都一样的,只是运行时的加载方式不同。在这一点是我觉得是值得推崇的地方,里里外外,遵循统一的原则。从Kettle 4开始,Kettle内部有一个插件注册系统,负责加载各种内部和外部的插件。

插件有以下两个标识属性:

  1. 插件类型:由PluginTypeInterface接口定义,例如StepPluginType、 JobEntryPluginType、PartionerPluginType与RepositoryPluginType。
  2. 插件ID: 这是一个字符串,用来唯一标识一个插件。在大多数情况下,插件只使用一个单一的字符串,如TableInput是“表输入”步骤的ID, MYSQL是MySQL数据库类型的ID。使用相同的ID可以达到将旧的插件用新的插件替代的目的。

当Kettle环境初始化以后,插件注册系统首先会加载所有的内部对象,Kettle读取下面的配置文件来加载内部对象,这些配置文件位于Kettle的.jar文件中。

  1. Kettle-steps.xml: 内部转换步骤。

  2. Kettle-job-entries.xml:内部作业项。

  3. Kettle-partition-plugins.xml:内部分区类型。

  4. Kettle-database-types.xml:内部数据库类型。

  5. Kettle-repositories.xml:内部资源库类型。

插件注册系统加载了所有的内部对象后,开始搜索可用的外部插件。通过浏览Plugins目录下各个子目录下的.jar文件来完成。它搜索特定的Kettle annotations来判断一个类是否是插件。

因为在内部对象加载后才加载插件,所以插件会替代相同ID的已加载的内部对象。例如,创建了插件,插件的ID是TableInput,就可以替换Kettle标准的“表输入”步骤。这个功能可以用插件替换Kettle内置的步骤。可以通过子类继承的方式,直接扩展已有步骤的某些功能。

kettle从入门到精通 第四十九课 ETL之kettle 自定义插件01的更多相关文章

  1. python第四十九课——对象序列化与反序列化

    person.py class Person: def __init__(self,*args,**kwargs): print('我是Person类的构造...') # self.name=name ...

  2. GPU 编程入门到精通(四)之 GPU 程序优化

    博主因为工作其中的须要,開始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GPU 编程.因此在这里特地学习一下 GPU 上面的编程.有志同道合的小伙伴 ...

  3. NeHe OpenGL教程 第四十五课:顶点缓存

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  4. NeHe OpenGL教程 第四十八课:轨迹球

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  5. NeHe OpenGL教程 第四十六课:全屏反走样

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  6. centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课

    centos   shell编程6一些工作中实践脚本   nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志  直接送给bc做计算  gzip  innobacku ...

  7. NeHe OpenGL教程 第四十二课:多重视口

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  8. Gradle 1.12用户指南翻译——第四十九章. Build Dashboard 插件

    本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  9. SQL注入之Sqli-labs系列第四十七关,第四十八关,第四十九关(ORDER BY注入)

    0x1 源码区别点 将id变为字符型:$sql = "SELECT * FROM users ORDER BY '$id'"; 0x2实例测试 (1)and rand相结合的方式 ...

  10. “全栈2019”Java第四十九章:重载与重写对比详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

随机推荐

  1. 【Oracle】对一个已经拥有重复数据的表的列设置唯一性约束

    对一个已经拥有重复数据的表的列设置唯一性约束 在这种情况下创建唯一性约束,可以发现会报错,通常为由于存在重复的键值,无法生效唯一性约束 最简单的方法,就是删除重复的记录,这样就可以按照正常流程,创建唯 ...

  2. 剑指offer004(Java)-只出现一次的数字(中等)

    题目: 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 .请你找出并返回那个只出现了一次的元素. 示例1: 输入:nums = [2,2,3,2] 输出:3 示例 ...

  3. DataV 3D 平面地图 2.0 焕新上线

    ​简介:DataV3月,3D平面地图2.0现已上线~ 3D 平面地图 2.0 现已上线~ 让我们来看看更新了哪些功能吧! 01 交互升级,省市区自由下钻 自带行政区域数据,无需配置: ​ 甚至,可以通 ...

  4. Windows下绑定线程到指定的CPU核心

    在某些场景下,需要把程序绑定到指定CPU核心提高执行效率.通过微软官方文档查询到Windows提供了两个Win32函数:SetThreadAffinityMask和SetProcessAffinity ...

  5. Unity 热更--AssetBundle学习笔记 1.0【AB包资源加载工具类的实现】

    工具类封装 通过上文中对AB包加载API的了解和简单使用,对AB包资源加载的几种方法进行封装,将其写入单例类中,如代码展示. 确保每个AB资源包只加载一次: 在LoadAssetBundleManag ...

  6. Steam中将XBox手柄默认布局改为任天堂手柄布局的方法

    1. 在Steam菜单栏找到"查看",选择大屏幕模式. 2. 进入大屏幕模式后,在菜单界面找到"设置". 3. 在设置界面找到"控制器",选 ...

  7. golang cron定时任务简单实现

    目录 星号(*) 斜线(/) 逗号(,) 连字符 (-) 问好 (?) 常用cron举例 使用说明 golang 实现定时服务很简单,只需要简单几步代码便可以完成,不需要配置繁琐的服务器,直接在代码中 ...

  8. ansible(7)--ansible的file模块

    1. file模块 功能:为被控端创建文件或目录,设定权限属性: 主要参数如下: 参数 说明 path 指定远程服务器的路径,也可以写成'dest','name' state 状态,可以将值设定为di ...

  9. Nginx 常用的基础配置(web前端相关方面)

    文章出处:https://juejin.cn/post/7196859948554715195 基础配置 user root; worker_processes 1; events { worker_ ...

  10. 效率工具mysoV0.3.0功能介绍

      也许大家在日常工作中,有使用过提升效率的工具,比如快速搜索文件的Everything:火柴:Listary等,这些工具都在一定程度上提升您的工作效率.myso作为后来者,跟上述软件一样,也是为提升 ...