简介

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。

Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。

Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。

Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

Kettle可以在http://kettle.pentaho.org/网站下载到。

术语

1. Transformation 转换步骤,可以理解为将一个或者多个不同的数据源组装成一条数据流水线。然后最终输出到某一个地方,文件或者数据库等。

2. Job 作业,可以调度设计好的转换,也可以执行一些文件处理(比较,删除等),还可以 ftp 上 传,下载文件,发送邮件,执行 shell 命令等

3. Hop 连接转换步骤或者连接 Job(实际上就是执行顺序) 的连线 Transformation hop:主要表示数据的流向。从输入,过滤等转换操作,到输出。

Job hop:可设置执行条件: 1, 无条件执行  2, 当上一个 Job 执行结果为 true 时执行  3, 当上一个 Job 执行结果为 false 时执行

应用场景

  • 表视图模式:这种情况我们经常遇到,就是在同一网络环境下,我们对各种数据源的表数据进行抽取、过滤、清洗等,例如历史数据同步、异构系统数据交互、数据对称发布或备份等都归属于这个模式;传统的实现方式一般都要进行研发(一小部分例如两个相同表结构的表之间的数据同步,如果sqlserver数据库可以通过发布/订阅实现),涉及到一些复杂的一些业务逻辑如果我们研发出来还容易出各种bug;

  • 前置机模式:这是一种典型的数据交换应用场景,数据交换的双方A和B网络不通,但是A和B都可以和前置机C连接,一般的情况是双方约定好前置机的数据结构,这个结构跟A和B的数据结构基本上是不一致的,这样我们就需要把应用上的数据按照数据标准推送到前置机上,这个研发工作量还是比较大的;

  • 文件模式: 数据交互的双方A和B是完全的物理隔离,这样就只能通过以文件的方式来进行数据交互了,例如XML格式,在应用A中我们开发一个接口用来生成标准格式的XML,然后用优盘或者别的介质在某一时间把XML数据拷贝之后,然后接入到应用B上,应用B上在按照标准接口解析相应的文件把数据接收过来;

kettle的组成

SPOON:允许你通过图形界面来设计ETL转换过程(Transformation)。
PAN:允许你批量运行由Spoon设计的ETL转换 (例如使用一个时间调度器)。Pan是一个后台执行的程序,没有图形界面。
CHEF :允许你创建任务(Job)。 任务通过允许每个转换,任务,脚本等等,更有利于自动化更新数据仓库的复杂工作。任务通过允许每个转换,任务,脚本等等。
KITCHEN:允许你批量使用由Chef设计的任务 (例如使用一个时间调度器)。KITCHEN也是一个后台运行的程序。

tips:linux上执行job kitchen.sh -file=/PRD/updateWarehouse.kjb -level=Minimal

执行转换 pan.sh -file=/PRD/updateWarehouse.kjb -level=Minimal

Transformation组件树介绍

Transformation中的节点介绍如下:

  • Main Tree:菜单列出的是一个transformation中基本的属性,可以通过各个节点来查看。
  • DB连接:显示当前transformation中的数据库连接,每一个transformation的数据库连接都需要单独配置。
  • Steps:一个transformation中应用到的环节列表
  • Hops:一个transformation中应用到的节点连接列表 
    核心对象菜单列出的是transformation中可以调用的环节列表,可以通过鼠标拖动的方式对环节进行添加。
  • Input:输入环节
  • Output:输出环节
  • Lookup:查询环节
  • Transform:转化环节
  • Joins:连接环节
  • Scripting:脚本环节

Job组件树介绍

Job中的节点介绍如下:

  • Main Tree:列出的是一个Job中基本的属性,可以通过各个节点来查看。 
    DB连接:显示当前Job中的数据库连接,每一个Job的数据库连接都需要单独配置。
  • Job entries/作业项目:一个Job中引用的环节列表 
    核心对象菜单列出的是Job中可以调用的环节列表,可以通过鼠标拖动的方式对环节进行添加。 
    每一个环节可以通过鼠标拖动来将环节添加到主窗口中。 
    并可通过shift+鼠标拖动,实现环节之间的连接。

经常遇到问题:

1.  如何连接资源库?

如果没有则创建资源库

2.  如何连接数据库?

在连接数据库之前,首先需要保证当前在一个transform(转换)页面,然后点击左侧选项栏中的“主对象树”,然后右键点击“DB连接”,选择“新建”。

当然也可以设置一些其他的连接属性,如zeroDateTimeBehavior=round&characterEncoding=utf8。

3.  如何解决数据库连接更新不及时问题?

有时候我们数据库中的表的字段进行了更新(增加或删除字段),但是在使用“表输入”控件的“获取SQL语句”功能是会发现的到的字段还是原来的字段,这是由于缓存造成的,需要进行缓存清理。

4.  如何解决Unable to read file错误?

有时候我们在文件夹中将Job或Transform移动到其他目录之后,执行时会出现Unable to read file错误。然后就进入到了当前Transform的配置页面。修改配置中的目录即可。

5.  如何解决tinyint类型数据丢失问题?

在Kettle使用JDBC连接MySQL时,对于表中数据类型为tinyint的字段,读取时有可能会将其转为bool类型,这有可能造成数据丢失。例如,有一个叫status名字的tinyint类型字段,取值有三种:0、1、2。kettle读取之后很可能将0转为false,1、2都转为true。输出时,将false转为0,true转为1,这样就会造成元数据中status为2的数据被错误的赋值为1。
解决这个问题时,可以在读取元数据时将status转为int或char。比如SELECT CAST(status as signed) as status FROM <table_name>或SELECT CAST(status as char) as status FROM <table_name>

Kettle能做什么?相关推荐

  1. kettle 只做插入操作不做更新

    需求:表1和表2不在同一物理机上,将表2中的有的表1中没有的数据插入表1中,在表1有的数据不做更新操作 1.表1原数据 2.表2原数据 3.表1和表2join后数据 4.处理后数据 kettle实现 ...

  2. mysql etl工具干什么的_基于现在接触的ETL工具(datax和kettle)做个小总结

    现阶段需要做数据库同步工作,目前调研了两个工具datax和kettle 目前虽然环境使用的是kettle+jenkins调度平台方案,但是多多少少会有一些不太令人满意的地方,但应该算是满足大部分需求了 ...

  3. kettle中的switch_Kettle学习笔记(二)— 基本操作

    目录 打开Kettle 打开时间略长,请耐心等待. 常用的控件说明 这里先对控件做下简单说明,方便后面使用. 通用控件 通用--START:作业开始: 通用--作业:指定某个作业循环执行: 通用--转 ...

  4. KETTLE初学者使用教程

    Kettle的建立数据库连接.使用kettle进行简单的全量对比插入更新:kettle会自动对比用户设置的对比字段,若目标表不存在该字段,则新插入该条记录.若存在,则更新. Kettle简介:Kett ...

  5. kettle连接不上es7_kettle常见问题解决

    摘要:本文主要讨论如何在你自己的Java应用程序中集成Kettle 如果你需要在自己的Java应用程序中集成Kettle , 一般来说有两种应用需求,一种是通过纯设计器来设计ETL转换任务,然后保存成 ...

  6. 开源ETL工具kettle系列

    开源ETL工具kettle系列之常见问题 摘要:本文主要介绍使用kettle设计一些ETL任务时一些常见问题,这些问题大部分都不在官方FAQ上,你可以在kettle的论坛上找到一些问题的答案 1. J ...

  7. Kettle 使用详解

    第0章 ETL简介 ETL (Extract-Transform-Load 的缩写,即数据抽取.转换.装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种 ...

  8. kettle基础总结

    kettle基础总结 企业数据仓库模型 ​ 企业数据仓库的数据来源可以是历史数据:也可以是正在运行的业务系统的数据,如OA,CRA,MES:或者其他数据如第三方数据,还有日志数据.这些数据如何进入数据 ...

  9. 开源ETL工具kettle系列之常见问题

    摘要:本文主要介绍使用kettle设计一些ETL任务时一些常见问题,这些问题大部分都不在官方FAQ上,你可以在kettle的论坛上找到一些问题的答案 1. Join 我得到A 数据流(不管是基于文件或 ...

最新文章

  1. java 多线程监听同一个端口_使用多线程在Java服务器中同时侦听两个端口
  2. python中isleap_Python学习笔记(十三)系统
  3. hdu1010 Tempter of the Bone
  4. anaconda3对应的python版本_利用SWIG实现Python调用C/C++!速度快就算了,代码量还特少!...
  5. java分页插件PageHelper的内置list数据操作失败
  6. fastjson反序列化过滤字段属性_Fastjsonlt;=1.2.47反序列化漏洞源码分析及复现
  7. JAVA8的学习笔记之Collection
  8. SourceTree下载与安装 ---记录一下,如果忘记了再拿来看看
  9. ASP.NET:使用Flurl制作可复用的分页组件
  10. 对象数组题目 Student类
  11. 设置ubuntu Android sdk JDK环境变量
  12. dialog在关闭的时候会刷新页面,并且地址后面多加了一个问号,导致数据查询不出来的解决方法
  13. 贝叶斯定理,从白袜到飞机失事再到人工智能
  14. 常量的分类_基本数据类型
  15. 浅谈二十年后电气工程前途
  16. java模拟手机号码发短信_java实现发送手机短信
  17. Mybatis批量update修改实例
  18. python strftime时分秒_python如何把秒换成时分秒
  19. 计算机防火墙无法关闭,为什么我电脑的防火墙关不了(win7电脑防火墙怎么关)
  20. 笔记本电脑wifi图标消失解决

热门文章

  1. 使用OpenCV创建视频
  2. Qt Creator用户互动方法
  3. C++kruskals算法生成最小协议树(附完整源码)
  4. vector的实现原理
  5. java handler的用法_Handler和内部类的正确用法
  6. 05,pytorch_手写数字案例
  7. 6.(Mysql数据管理相关)连接MYSQL,修改密码,增加新用户,数据库相关命令,表操作相关命令,数据相关命令,数据库sql导入和导出,备份数据库,查看不到mysql数据库的解决办法
  8. Linux备份压缩命令
  9. 你该认识这样的Linux_shell之循环控制
  10. pythonpip安装与使用_Python pip 安装使用与问题