测试文档(产品帮助文档专用)

Kettle适配器

通过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包端,两端无依赖关系的连线。

场景

.ktr、.kjb文件中配置示例

对应到采集数据源的配置

Kettle文件中是明确数据库类型的连接信息,使用server、type、access、database、port、username进行一一对应。

Kettle文件中的<server>值和JSON串属性server对应。

Kettle文件中的<type>值和JSON串属性type对应。

Kettle文件中的<access>值和JSON串属性access对应。

Kettle文件中的<database>值和JSON串属性database对应。

Kettle文件中的<port>值和JSON串属性port对应。

Kettle文件中的<username>值和JSON串属性username对应。

 

<connection>
<server>127.0.0.1</server>
<type>MYSQL</type>
<access>Native</access>
<database>db_demo</database>
<port>3306</port>
<username>user_test</username>
</connection>

 其中,一一对应即可,形如

{
"server": "127.0.0.1",
"type": "MYSQL",
"access": "Native",
"database": "db_demo",
"port": "3306",
"username": "user_test",
"url": "",
"driverClass": ""
}

 

Kettle文件中是GENERIC类型的连接信息,需要额外追加配置url和driverClass。

Kettle文件中的<server>值和JSON串属性server对应。

Kettle文件中的<type>值和JSON串属性type对应,值是GENERIC。

Kettle文件中的<access>值和JSON串属性access对应。

Kettle文件中的<database>值和JSON串属性database对应。

Kettle文件中的<port>值和JSON串属性port对应。

Kettle文件中的<username>值和JSON串属性username对应。

Kettle文件中的属性名CUSTOM_URL的值和JSON串属性url对应。

Kettle文件中的属性名CUSTOM_DRIVER_CLASS的值和JSON串属性driverClass对应。

 

<connection>
<server>127.0.0.1</server>
<type>GENERIC</type>
<access>Native</access>
<database>ummyhost:00000</database>
<port>10000</port>
<username>hive</username>
<attributes>
<attribute>
<code>CUSTOM_DRIVER_CLASS</code>
<attribute>org.apache.hive.jdbc.HiveDriver</attribute>
</attribute>
<attribute>
<code>CUSTOM_URL</code>
<attribute>jdbc:hive2://127.0.0.1:10000/default</attribute>
</attribute>
</attributes>
</connection>

{
"server": "127.0.0.1",
"type": "GENERIC",
"access": "Native",
"database": "ummyhost:00000",
"port": "10000",
"username": "hive",
"url": "jdbc:hive2://127.0.0.1:10000/default",
"driverClass": "org.apache.hive.jdbc.HiveDriver"
}

 

完成后,点击【下一步】,配置入库策略和是否自动发布。

点击【下一步】,若采集模式选择服务器文件(定时采集),此页面可配置定时执行的计划任务;若采集模式选择文件上传(手动采集),此页面只配置采集任务标题。

点击【保存】,创建采集数据源和采集任务成功。

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采集适配器获取到信息。请通过其他补录适配器对这段关系进行补录。

附件列表

0

文档内容仅供参考
如果您需要解决具体问题,还可以登录亿信社区
在提问求助板块提问,30分钟内帮您解决问题

如果您认为本词条还有待完善,请编辑

上一篇MAPPING导入适配器

下一篇Smartbi适配器

请先登录