kettle 学习总结

What is ETL

ETL

Extraction-Transformation-Loading的缩写,中文名称为数据提取、转换和加载。 ETL工具有:OWB(Oracle Warehouse Builder)、ODI(Oracle Data Integrator)、Informatic PowerCenter、Trinity、AICloudETL、DataStage、Repository Explorer、Beeload、Kettle、DataSpider
目前,ETL工具的典型代表有:Informatica、Datastage、OWB、微软DTS、Beeload、Kettle……
开源的工具有eclipse的etl插件。cloveretl.

数据集成:快速实现ETL
ETL的质量问题具体表现为正确性、完整性、一致性、完备性、有效性、时效性和可获取性等几个特性。而影响质量问题的原因有很多,由系统集成和历史数据造成的原因主要包括:业务系统不同时期系统之间数据模型不一致;业务系统不同时期业务过程有变化;旧系统模块在运营、人事、财务、办公系统等相关信息的不一致;遗留系统和新业务、管理系统数据集成不完备带来的不一致性。
实现ETL,首先要实现ETL转换的过程。它可以集中地体现为以下几个方面:
- 空值处理:可捕获字段空值,进行加载或替换为其他含义数据,并可根据字段空值实现分流加载到不同目标库。
- 规范化数据格式:可实现字段格式约束定义,对于数据源中时间、数值、字符等数据,可自定义加载格式。
- 拆分数据:依据业务需求对字段可进行分解。例,主叫号 861082585313-8148,可进行区域码和电话号码分解。
- 验证数据正确性:可利用Lookup及拆分功能进行数据验证。例如,主叫号861082585313-8148,进行区域码和电话号码分解后,可利用Lookup返回主叫网关或交换机记载的主叫地区,进行数据验证。
- 数据替换:对于因业务因素,可实现无效数据、缺失数据的替换。
- Lookup:查获丢失数据 Lookup实现子查询,并返回用其他手段获取的缺失字段,保证字段完整性。
- 建立ETL过程的主外键约束:对无依赖性的非法数据,可替换或导出到错误数据文件中,保证主键唯一记录的加载。

开源ETL工具之Kettle介绍

What

起源
Kettle是一个Java编写的ETL工具,主作者是Matt Casters,2003年就开始了这个项目,最新稳定版为7.1。
2005年12月,Kettle从2.1版本开始进入了开源领域,一直到4.1版本遵守LGPL协议,从4.2版本开始遵守Apache Licence 2.0协议。
Kettle在2006年初加入了开源的BI公司Pentaho, 正式命名为:Pentaho Data Integeration,简称“PDI”。
2017年9月20日起,Pentaho已经被合并于日立集团下的新公司: Hitachi Vantara。
总之,Kettle可以简化数据仓库的创建,更新和维护,使用Kettle可以构建一套开源的ETL解决方案。

架构
Kettle是一个组件化的集成系统,包括如下几个主要部分:
1.Spoon:图形化界面工具(GUI方式),Spoon允许你通过图形界面来设计Job和Transformation,可以保存为文件或者保存在数据库中。
也可以直接在Spoon图形化界面中运行Job和Transformation,
2.Pan:Transformation执行器(命令行方式),Pan用于在终端执行Transformation,没有图形界面。
3.Kitchen:Job执行器(命令行方式),Kitchen用于在终端执行Job,没有图形界面。
4.Carte:嵌入式Web服务,用于远程执行Job或Transformation,Kettle通过Carte建立集群。
5.Encr:Kettle用于字符串加密的命令行工具,如:对在Job或Transformation中定义的数据库连接参数进行加密。

基本概念
1.Transformation:定义对数据操作的容器,数据操作就是数据从输入到输出的一个过程,可以理解为比Job粒度更小一级的容器,我们将任务分解成Job,然后需要将Job分解成一个或多个Transformation,每个Transformation只完成一部分工作。
2.Step:是Transformation内部的最小单元,每一个Step完成一个特定的功能。
3.Job:负责将Transformation组织在一起进而完成某一工作,通常我们需要把一个大的任务分解成几个逻辑上隔离的Job,当这几个Job都完成了,也就说明这项任务完成了。
4.Job Entry:Job Entry是Job内部的执行单元,每一个Job Entry用于实现特定的功能,如:验证表是否存在,发送邮件等。可以通过Job来执行另一个Job或者Transformation,也就是说Transformation和Job都可以作为Job Entry。
5.Hop:用于在Transformation中连接Step,或者在Job中连接Job Entry,是一个数据流的图形化表示。

在Kettle中Job中的JobEntry是串行执行的,故Job中必须有一个Start的JobEntry;Transformation中的Step是并行执行的。

Why

组件对比
目前,ETL工具的典型代表有:

  • 商业软件:Informatica PowerCenter,IBM InfoSphere DataStage,Oracle Data Integrator,Microsoft SQL Server Integration Services等
  • 开源软件:Kettle,Talend,Apatar,Scriptella等
  • 纯java编写,可以跨平台运行,绿色无需安装,数据抽取高效稳定。

  • 相对于传统的商业软件,Kettle是一个易于使用的,低成本的解决方案。

  • Spoon是基于SWT(SWT使用了本地操作系统的组件库,性能更好,界面更符合本地操作系统的风格)开发的,支持多平台:

Microsoft Windows: all platforms since Windows 95, including Vista
Linux GTK: on i386 and x86_64 processors, works best on Gnome
Apple's OSX: works both on PowerPC and Intel machines
Solaris: using a Motif interface (GTK optional)
AIX: using a Motif interface
HP-UX: using a Motif interface (GTK optional)
FreeBSD: preliminary support on i386, not yet on x86_64

Kettle使用场景
Migrating data between applications or databases 在应用程序或数据库之间进行数据迁移
Exporting data from databases to flat files 从数据库导出数据到文件
Loading data massively into databases 导入大规模数据到数据库
Data cleansing 数据清洗
Integrating applications 集成应用程序

还可以在这里了解详细

kettle 各个版本的比较 详见 https://blog.csdn.net/Q1059081877Q/article/details/80525633

7.1 版本之后的资源库链接换了地方了

以前 在工具 –> 资源库新建 –> 可以新建资源库 图上我是有链接后的没有链接的那里是一个按钮 connect

kettle 安装与下载

在装之前咱们需要引入一个概念 : kettle资源库

一、Kettle资源库概述

1、kettle资源库保存的是Kettle元数据。
2、资源库包括文件资源库、数据库资源库。在服务端新建资源库,只能使用数据库资源库。
3、不使用资源库:直接保存为ktr或kjb文件。

二、如何选择资源库

(一)数据库资源库的缺点

1、不能存储转换或作业的多个版本。
2、严重依赖于数据库的锁机制来防止工作丢失。
3、 没有考虑到团队开发,开发人员不能锁住自己开发的某个作业。

(二)文件资源库的缺点

1、对象(如转换、作业、数据库连接等对象)之间的关联关系难以处理,所以删除、重命名等操作会比较麻烦。
2、没有版本历史。
3、难以进行团队开发。
不使用资源库:使用svn进行文件版本控制。

三、管理资源库

1、ETL开发的几个阶段:开发、测试、确认、发布。
2、各阶段对应的资源库:开发资源库、测试(确认)资源库、发布资源库。
3、各阶段推进:
(1)从开发资源库到测试资源库:注意命名规则。由一个人统一发布,避免冲突。
两种移植方法:断开重连、导出/导入。
(2)从测试(确认)资源库到发布资源库: 导出/导入
不使用资源库SVN版本控制,测试打tag(标签),发布建branch(分支)。

四、资源库参数化

(一)为什么要参数化。

在资源库之间移植作业时,因为各个阶段的环境不一样,在作业里使用的数据库连接等元数据不能硬编码。

(二)参数化的方法

1、kettle.properties,文件位于java的user.home目录下。
2、自定义properties文件,通过属性文件输入步骤读取。

地址详见 https://blog.csdn.net/Q1059081877Q/article/details/80526593

最新8.1 的下载在 https://jaist.dl.sourceforge.net/project/pentaho/Pentaho%208.1/client-tools/pdi-ce-8.1.0.0-365.zip

其他的直接在官网可以直接下载 不过文件比价大 下载比较慢。

kettle 要求jdk 1.7 以上。你的环境变量要设置好 。不过对于java 的我们这些小case了

下载完以后 解压 pdi-ce-8.1.0.0-365.zip
进入D:\xueqyImportant\pdi-ce-8.1.0.0-365\data-integration

运行 spoon.bat 就可以了
在最开始我们要新建 资源库 一般我们在选择资源库种类的我都是选择第一个 资源库可以存我们的数据库连接 job转换的的各个步骤等详细信息 如果没有资源库 数据库你就要每个转换都新建数据库连接这样很麻烦
资源库最原始的用户名密码是admin admin
可以自己在数据库加 他的 加密明文密码 可以自己设置 方法是 密码可以通过 https://blog.csdn.net/Q1059081877Q/article/details/80497817 设置

不过在你链接数据库的时候可能会报错 没有加相应的驱动文件 mysql的驱动jar包

kettle 集群开发
https://blog.csdn.net/u013434750/article/details/60958990

kettle 学习小结相关推荐

  1. Python - 输出格式 (学习小结)

    Python - 输出格式 (学习小结) Bu.xing 利用现代手段,创建学习家园 ​关注他 1 人赞同了该文章 Python 输出格式 我们常说的输出格式分两种含义: # 一种是指数据在屏幕上的显 ...

  2. Page 的生命周期学习小结

    (以前我在 csdn 写的翻译文章,现在转到这里来.) Page 的生命周期学习小结 原文链接:Page Events: Order and PostBack 作者:Paul Wilson 翻译:木野 ...

  3. c语言基本类型学习小结

    基本类型学习小结 环境: Dev-C++ 4.9.6.0 (gcc/mingw32), 使用-Wall编译选项 基本类型包括字节型(char).整型(int)和浮点型(float/double). 定 ...

  4. python中字典和集合的区别_Python中字典和集合学习小结

    映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元组等 包含可变对象的列表. ...

  5. 【转载】Hyperledger学习小结

    Hyperledger学习小结 自学Hyperledger Composer也有段时间了,是时候对所学的知识总结一下了.因为没有实际项目参与的话,差不多也就到此为止了.后续可能会去了解一下以太坊的技术 ...

  6. 图片裁剪功能学习小结

    图片裁剪功能学习小结 近期有需要使用图片裁剪的功能,在使用插件和自己写裁剪组件之间犹豫了很久,后来根据需求经过反复的考虑,还是自己封装吧,毕竟自己动手,丰衣足食,对吧?嗯,??????是的!最后生成裁 ...

  7. pthread多线程编程的学习小结

    pthread多线程编程的学习小结 pthread 同步3种方法: 1 mutex 2 条件变量 3 读写锁:支持多个线程同时读,或者一个线程写 程序员必上的开发者服务平台 -- DevStore p ...

  8. ShaderLab学习小结(十九)RenderToCubemap创建能反射周围环境的效果

    继续用"ShaderLab学习小结(十八)cubemap"中所做的shader 想要让它能对周围的环境进行反射 思路就是要让它的cubemap里的内容是周围环境的映射 shader ...

  9. RabbitMQ(七):常用方法说明 与 学习小结

    RabbitMQ(一):Hello World程序 RabbitMQ(二):Work Queues.循环分发.消息确认.持久化.公平分发 RabbitMQ(三):Exchange交换器--fanout ...

最新文章

  1. python import问题
  2. EventBus简单分析
  3. linux yum配置文件 yum.conf 简介
  4. 【Linux指标】内存篇
  5. 计算机网络技术教法改革方案,计算机网络实验论文,关于“计算机网络”教学改革相关参考文献资料-免费论文范文...
  6. cobaltstrike安装_CobaltStrike + Metasploit 组合安装
  7. DM8168学习--内存烧写位置
  8. SAP CRM BSP repository 如何判断switch的状态
  9. c++调用cplex求解例子_递归算法的R语言实现 (罗汉塔、九连环、斐波那契数列等问题的求解)...
  10. vue-router query,parmas,meta传参
  11. tensorflow之max_pool
  12. c语言用户给顺序表输入值,C语言与数据结构实验指导(删减程序版)课案.docx
  13. Python脚本实现单据体背景色及字段前景色设置
  14. SVN配置–服务器端(linux)
  15. docker客户端和服务端
  16. java开发特殊技能怎么填_【程序员简历】IT技能/编程技能应当怎么写?
  17. vue 下载pdf文件
  18. 415错误及解决方法
  19. 微信小程序项目实例——双人五子棋
  20. matlab 求向量的正切,matlab中的反正切函數 | 學步園

热门文章

  1. 华为Mate30EPro和华为Mate30的区别
  2. idea使用git从远程仓库Clone项目
  3. 新兴的跨平台BianLian勒索软件攻击正在提速
  4. jquery实现的打字机字幕效果
  5. 清华大学计算机科学学院刘钊,王霞,PhD - 教研系列 - 清华大学药学院
  6. 【密码学】Pollard‘s p-1素数分解算法
  7. mapper.xml文件启动报错:Result Maps collection already contains value for
  8. 旅游自助系统项目之管理系统的开发
  9. 陆金所控股2020年经调整净利润136亿,同比增长2.1%
  10. PM981/PM981a安装黑苹果-补丁说明