通过kettle采集适配器,解析keetlt脚本,采集元数据及依赖关系,从而得到对应关系型数据库之间的关系。
1. 配置数据源和采集任务
在元数据采集的适配器管理页面,选择【数据处理工具】分类下的【kettle采集适配器】,点击右上角的添加按钮,进入新建采集向导。
在采集向导中,填写数据源名称,并选择是否需要审核(审核选择“是”,则所有的采集数据均需要做入库审核);适配器、工具版本默认即可;采集模式可选择服务器文件(定时采集)和文件上传(手动采集)。
注:若选择服务器文件(定时采集),在“数据源参数配置”页面需配置ktr脚本文件所在的路径,路径中需写明文件名。
数据源挂载路径若没有,可点击【新建】。
浏览器新标签页打开最新元数据页面,可新建元数据挂载点。
元数据代码、名称根据需求命名;元数据类型,在下拉框中选择: 数据处理包--kettle包--kettle。
完成新建kettle挂载点后,返回采集向导数据源配置界面,先点击刷新,再选择刚刚新建的数据源挂载路径,点击【下一步】。
在数据源参数配置,需设置数据连接月挂在点对应的关系,即mountParams参数,此参数的写法为:JSON数组,一个对象一个数组。
注意:Kettle采集数据源,测试连接,仅是校验填入的mountParams参数,当其有值时,值是否是标准的JSON串。如果mountParams参数解析失败,就会识别成连接不成功。
Tips: 挂载点的元数据ID可以在最新元数据的基本信息页面查看: mountParams参数:使用记事本等文本工具打开Kettle文件(*.ktr、*.kjb)文件,找到定义的数据库连接信息<connection></connection>属性片段,从而进行配置。 参考格式如下,请按实际情况填写: [{ "metaId": "0665c380539d4adbbb036c2627328496", "connection": [{ "server": "${DB_HOST}", "type": "ORACLE", "access": "Native", "database": "${DB_NAME}", "port": "${DB_PORT}", "username": "${DB_USERNAME}", "url": "", "driverClass": "" }, { "server": "127.0.0.1", "type": "ORACLE", "access": "Native", "database": "dhcc", "port": "1521", "username": "scott", "url": "", "driverClass": "" }] }, { "metaId": "8c9a71e7baa04a61936dbef4aad99096", "connection": [{ "server": "10.16.46.61", "type": "GENERIC", "access": "Native", "database": "ummyhost:00000", "port": "10000", "username": "hive", "url": "jdbc:hive2://10.16.46.61:10000/ods", "driverClass": "org.apache.hive.jdbc.HiveDriver" }] }, { "metaId": "c635d8db61c540f4aa5eb00470ea1def", "connection": [{ "server": "10.16.46.61", "type": "GENERIC", "access": "Native", "database": "ummyhost:00000", "port": "10000", "username": "hive", "url": "jdbc:hive2://10.16.46.61:10000/std", "driverClass": "org.apache.hive.jdbc.HiveDriver" }] } ]
注意:1、需要移除注释并压缩json串后填入mountParams参数中。 2、后面connection,是数组格式,它可以有多个,对应Kettle文件(*.ktr、*.kjb)中数据库连接信息<connection></connection>属性的值。 3、连接信息需要配得一样,否则会导致数据库端和Kettle包端,两端无依赖关系的连线。
|
完成后,点击【下一步】,配置入库策略和是否自动发布。
点击【下一步】,若采集模式选择服务器文件(定时采集),此页面可配置定时执行的计划任务;若采集模式选择文件上传(手动采集),此页面只配置采集任务标题。
点击【保存】,创建采集数据源和采集任务成功。
Tips: 也可以在【数据源管理】先创建采集数据源,再在【采集任务设置】创建采集任务。 |
2. 执行采集任务
切换到【采集任务配置】模块,找到之前创建好的计划任务,点击【立即执行】,若采集模式选择服务器文件(定时采集),则开始采集,服务器上的kettle脚本;若采集模式选择文件上传(手动采集),则弹出上传文件框,选择本地kettle脚本进行上传后,再开始采集元数据。
Tips: 可上传单个文件,或是指定采集位于睿治服务器中某一目录下某一文件。文件后缀为.zip或.ktr或.kjb。其中,.zip是包含*.ktr、*.kjb、*.properties(仅kettle.properties)的压缩包。其中,.properties文件,不是必须的,没有也能采集。 采集的对象。要么是单个.ktr文件,要么是单个.kjb文件,要么是单个.zip文件。其中,如果是.zip文件,zip是包含*.ktr、*.kjb、*.properties(仅kettle.properties)的压缩包。zip包可以带子目录,会解析子目录下的.kjb、.ktr、.properties文件。但是不支持zip包中还有子压缩文件的形式。 如果上传不含.properties文件,并且能保障上传的这一批Kettle文件(*.ktr、*.kjb)中连接信息是指向同一个数据库,那么,采集配置mountParams参数中带${属性名}字样是可以的。 一个数据库端元数据节点,可以对应多个不同的Kettle连接信息。 |
点击立即执行后,打开的页面可以看到采集任务执行进度。
Tips: 采集任务在执行时,如果没配mountParams参数,有提示。kettle文件中<connection>连接信息配置有误的,会打印出来。同一个连接信息,在不同文件中的,只会打印一次。 可以根据提示内容,去配置mountParams参数。注意找准<connection>连接信息对应的数据库端元数据挂载点ID。
|
采集成功后,若数据源设置不审核,则在【元数据管理】-【最新元数据】中可查看采集到的元数据;若数据源设置了入库审核,则入库审核通过后才会进入到最新元数据中。
入库审核完成后,在最新元数据中,可看到采集的kettle的元数据:
3. 采集元素及形成依赖关系连线
1、一个转换文件(.ktr)对应一个KettleTransformation类型的元数据节点,一个Step对应一个元数据节点,一个Hop对应一条依赖关系连线。
2、一个作业(.kjb)对应一个KettleJob类型的元数据节点,一个JobEntry对应一个元数据节点,一个Hop对应一条依赖关系连线。
3、.ktr文件中Step内包含字段信息,字段信息会形成对应的元数据节点。如果.ktr文件Step中不包含字段信息,则字段元数据不能够被采集。
3.1Step中表输入,写SELECT SQL语句,故它的字段信息,是顶层SELECT结果集字段信息。程序会解析 SELECT SQL 语句,分析出顶层SELECT结果集字段信息,作为表输入的字段信息。
3.2Step的表输出,一般也有字段信息。其字段信息,定义在.ktr文件的<fields>中。当当未指定具体字段时,通过mountParams参数映射的对应数据库元数据获取字段列表。TableOutput中,<column_name>表示目标表(数据库表)中的列名,<stream_name>表示数据流中的字段名(即源端字段或转换过程中的字段名)。
3.3Step之表输入端,会和涉及到的源端的库表,会形成依赖关系。其双方下级字段,也会形成依赖关系连线。前提是需要配对mountParams参数映射关系。
3.4Step之表输出,会和涉及到的目标端的库表,会形成依赖关系。其双方下级字段,也会形成依赖关系连线。前提是需要配对mountParams参数映射关系。
3.5源端的库表与目标端的库表,会跳过中间过程形成依赖关系。其双方下级字段,也会跳过中间过程形成依赖关系,但如果不存在字段级中间过程,则不会形成依赖关系连线。
4、.ktr文件中Step之执行SQL脚本,是支持写SQL语句的(如insert into ... select ...)。程序会解析 SQL 脚本,将涉及到的源端库表、目标端库表、源端库表字段、目标端库表字段,形成依赖关系连线。
5、.kjb文件中JobEntry之SQL作业项,是支持写SQL语句的(如insert into ... select ...)。程序会解析 SQL 脚本,将涉及到的源端库表、目标端库表、源端库表字段、目标端库表字段,形成依赖关系连线。
6、支持的场景
6.1仅关注Kettle包自身的分析效果。不配置采集mountParams参数时,就没有数据库端到Kettle端的连线。但也能使用,此时,可以只关注Kettle文件本身体现的血缘关系。
6.2关注Kettle包与数据库端的分析效果。需要配置采集mountParams参数,会生成数据库端到Kettle端的连线。
库表(数据库端) -> 表输入组件(Kettle端),表输出组件(Kettle端)->库表(数据库端),这种连线是支持的,前提是需要配置好mountParams参数。
库表(数据库端) -> 文件文件组件(Kettle端),这种连线是不支持的。文本文件(如txt、csv)中的数据,来自某张库表,这种数仓卸数场景,因为kettle文件本身关于此部分信息没有记录,所以无法通过kettle采集适配器获取到信息。请通过其他补录适配器对这段关系进行补录。
请先登录