Kettle工具介绍和基本使用

IT集合11个月前更新 鲸落资源
1,788 0

Kettle简介

Kettle是一个开源的ETL工具,所有基本数据抽取、转换、加载,它都可以

Kettle是基于Java开发的,是开源免费的
有点:开源免费,直接网上下载使用;跨平台,Windows、Linux都可以使用;使用起来简单快捷

缺点:相比其他收费产品,劣势也就很显然了,比如稳定性,Bug修复处理,而且基于Java,性能上会差些。当然都是相对来
说,一般数据量使用或者逻辑不复杂的话,使用起来是很适合的

kettle相关知识

1、Kettle工程存储方式有两种:一种以XML像是存储,一种以资源库方式存储

2、kettle常用三大家族:spoon、pan、kitchen
    spoon:通过图形化界面方式设计、运行、调试Jon与Transformation
    pan:通过脚本命令方式来运行Transformation
    Kitchen:通过脚本命令方式运行Job,一般就是通过调用Kitchen脚本来完成定时任务
    
3、目前kettle有两种版本,一种社区版(免费),一种是企业版(收费)

Kettle使用

下载完成目录会看到.bat文件和.sh文件
.bat是windows下使用的
.sh是Linux下使用的
Spoon.bat启动kettle(需要Java环境)
pan.bat 命令行方式执行转换
kitchen.bat 命令行方式执行作业
carte.bat 启动web服务,用于Kettle的远程运行或集群运行
Encr.bat 密码加密

kettle中,主要有两种脚本文件,transformation(转换)和job(作业)

job则完成整个工作流的控制

负责[转换]祖师在一起进而完成某一块工作,通常我们需要把一个大的任务分成几个逻辑上隔离的作业,当这几个作业完成
了,也就说明这项任务完成了

1,Job Entry:一个Job Entry 是一个任务的一部分,它指向某些内容
2,Hop:一个Hop代表两个步骤之间的一个或者多个数据流。一个Hop总是代表着两个Job Entry之间的连接,并且能够被原始
的 Job Entry 设置,无条件指向下一个 Job Entry,知道指向成功或者失败
4,Note:一个 Note 是一个任务附加的文本注释信息

transformation完成对数据的基础转换

转换对数据操作的容器,数据曹组就是数据输入到输出的一个过程,可以理解为比作业力度更小一级的容器,我们将任务分解
成作业,然后需要价格作业分解成一个或多个转换,每个转换只完成一部分工作

1、Value:Value是行的一部分,并且是包含以下类型的数据:Strings、floating point Numbers、unlimited、precision
BigNumbers、Integers、Dates或者Boolean
2、Row:一行包含0个或者多个Values
3、Output Stream:一个 Output Stream 是离开一个步骤时的行的堆栈
4、Input Stream:一个 Input Stream 是进入一个步骤的行的堆栈
5、Step:转换额一个不争,可以是一个 Stream 或者是其他元素
6、Hop:一个 Hop 代表两个步骤之间的一个或者多个数据流。一个Hop总是代表一个步骤的输出流和一个步骤的输入流
7、Note:一个Note是一个转换附加的文件注释信息

组件树

1、Main Tree 菜单列出的是以 transformation 中基本的属性,可以通过各个节点来查看
2、DB连接:显示当前transformation中的数据库连接,每一个transformation的数据连接都需要单独配置
3、Step:一个Transformation中应用到的环节列表
4、Hops:一个Transformation中应用到的节点连接列表
5、Core Objects 菜单列出的是 transformation 中可以调用的环节列表,可以通过鼠标拖动的方式对环节进行添加
6、Input:输入环节
7、Output:输出环节
8、Lookup:查询环节
9、Transform:转化环节
10、Joins:连接环节
11、Scripting:脚本环节

Transformation 转换介绍

每一个环节可以通过鼠标通道来讲环节添加主窗口中。
并通过Shift+鼠标拖动,实现环节之间的连接

转换常用环节介绍


类别                环节名称                        功能说明
                    文本输入流                      从本地文件文件输入数据
Input               表输入                          从数据库中输入数据
                    获取系统信息                    读取系统信息输入数据

                    文本文件输出                    将处理结果输出到文本文件
                    表输出                          将处理结果输出到数据库表
Output                                              根据处理结果对数据库表机型插入数据,如果数据库中不存在
                    插入/更新                       相关记录则插入,否则为更新。会根据查询条件字段进行判断
                    更新                            根据处理结果对数据进行更新,若需要更新的数据在数据库表
                                                    中无记录,则会报错停止
                    删除                            根据处理结果对数据库记录进行删除,若需要删除的数据在数
                                                    据库表中无记录,则会报错听停止
                    
                    数据查询                        根据设定查询条件,对目标进行查询,返回需要的结果字段
                    流查询                          将目录表读取到内存中,通过查询条件对内存中数据集进行
Lookup                                              查询
                    调用DB存储过程                  调用数据库存储过程
                    
                    字段选择                        选择需要的榴弹,过滤掉不要的字段,也可以做数据库字段对应
Transform           过滤记录                        根据条件对记录进行分类
                    排序记录                        将数据根据某个条件,进行排序
                    空操作                          无操作

Scripting           Modified Java Sript Value       扩展功能,编写 JavaScrip 脚本,对数据进行相应处理

Mapping             映射(子转换)                    数据映射

                    Set Variables                   设置环境变量
Job                 Get Variables                   获取环境变量

Job任务介绍

Main Tree 菜单列出是一个Job中基本的属性,可以通过各个节点来查看
DB连接:显示当前Job中的数据库连接,每一个Job的数据库连接都需要单独配置
Job Entries:一个Job中引用的环节列表

常用环节介绍
    类别            环节名称                    功能说明
                    start                       开始
                    dummy                       结束
                    transformation              引用Transformation流程
                    job                         引用Job流程
                    Shell                       调用Shell脚本
                    Sql                         执行Sql语句
                    Ftp                         通过Ftp下载
                    Table exists                检查目标表是否存储,返回布尔值
    Job entries     File exists                 检查文件是否存储,返回布尔值
                    JavaScript                  执行JavaScript脚本
                    Create file                 创建文件
                    Delete file                 删除文件
                    wait for file               等待文件,文件出现或继续下一个环节
                    File Compare                文件比较,返回布尔值
                    Wait for                    等待时间,设定一段时间,kettle流程处于等待状态
                    Zip file                    压缩文件为 Zip 包

输入步骤简介

输入类步骤用来从外部获取数据,可以获取数据的数据源包括,文件文件(txt、csv、xml、json)数据库、Excel文件等
桌面文件,自定义的数据等。对特殊数据源和应用需求可以自定义输入插件。例子:生成随机数步骤

转换步骤简介

流程步骤是用来控制数据流的步骤。一般不对数据进行操作,只是控制数据库,列入:过滤步骤

连接步骤简介

连接步骤用来将不同数据集连接到一起。例如:笛卡尔乘积

输出步骤简介

输出步骤是输出数据的步骤,常见输出包括文件文件输出、表输出等,可以根据应用的需求开发插件以其他形式输出
例如:表输出

Kettle里元数据的存储方式

1、资源库 资源库包括文件资源库、数据库资源库 Kettle4.0以后资源库类型可以插件扩展
2、XML 文件 .ktr转换文件的XML的根节点必须是 transformation .kjb 作业 XML 的根节点是 job

数据库资源库:
    1、把 Kettle 的元数据串行化到数据库中、如 R_TRANSFORMATION 表中保存 Kettle 转换的名称,描述等属性
    2、在 Spoon 里创建和升级数据库的资源库
    
文件资源库
    在文件的基础上的封装,实现了 org.pentaho.di.repository.Repository 接口。是kettle4.0以后版本里增加的资源
    库类型
    不使用资源库:直接保存为 ktr或kjb文件

Kettle 资源库-如何选择资源库

数据库资源库的缺点:
    1、不能存储转换或作业的讴歌版本。
    2、验证依赖数据库的所机制来放置工作丢失
    3、没有考虑到团队开发,开发人员不能锁住某个作业自己开发
    
文件资源库的缺点
    1、对象(如转换、作业、数据库连接对象)之间的管理关系乃衣处理,所以删除、重命名等操作会比较麻烦
    2、没有版本历史
    3、难以进行团队开发
    不使用资源库:使用svn进行文件版本控制

命令行执行 Kettle 文件

参数格式说明 有两种格式 /参数名:值 或 ~参数名=值 建议使用第一种参数格式
1、执行test.ktr文件,日志保存在log。txt中,默认日志基本实 Basic
   Pan /file:D:AppProjects
   xkh est.ktr /logfile:D:log.txt

2、执行 test.ktr 文件日志保存在 D:log.txt中,日志级别是 Rowlevel
   Pan /file:D:AppProjects
   xkh est.ktr /logfile:d:log/txt/level:Rowlevel

3、导出一个 job 文件,以该 job 恩建依赖的转换及其他资源
   kitchen /file:c:job1.kjb /exprot:c:/a.zip
   
4、直接执行一个导出文件 zip 文件
   kitchen.bat /file:"zip:file:///c:/a/zip!job1.kjb"
© 版权声明

相关文章

广告也精彩

暂无评论

暂无评论...