大数据之ETL工具Kettle的--1功能介绍
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行。
说白了就是,很有必要去理解一般ETL工具必备的特性和功能,这样才更好的掌握Kettle的使用。我这里啊,先描述ETL工具的通用功能,再来描述作为ETL工具其中的一种(Kettle)是如何来提供这些功能的(图文详解)
ETL工具的功能之一:连接
任何ETL工具都应该有能力连接到类型广泛的数据源和数据格式。对于最常用的关系型数据库系统,还要提供本地的连接方式(如对于Oracle的OCI),ETL应该能提供下面最基本的功能:
(1)连接到普通关系型数据库并获取数据,如常见的Orcal、MS SQL Server、IBM DB/2、Ingres、MySQL和PostgreSQL。还有很多很多
(2)从有分隔符和固定格式的ASCII文件中获取数据
(3)从XML文件中获取数据
(4)从流行的办公软件中获取数据,如Access数据库和Excel电子表格
(5)使用FTP、SFTP、SSH方式获取数据(最好不用脚本)
(6)还能从Web Services 或 RSS中获取数据。如果还需要一些ERP系统里的数据,如Oracle E-Business Suite、SAP/R3、PeopleSoft 或 JD/Edwards,ETL工具也应该提供到这些系统的连接。
(7)还能提供Salesforce.com和SAP/R3的输入步骤,但不是套件内,需要额外安装。对于其他ERP和财务系统的数据抽取还需要其他解决方案。当然,最通用的方法就是要求这些系统导出文本格式的数据,将文本数据作为数据源。
ETL工具的功能之二:平台独立
一个ETL工具应该能在任何平台下甚至是不同平台的组合上运行。一个32位的操作系统可能在开发的初始阶段运行很好,但是当数据量越来越大时,就需要一个更强大的操作系统。另一种情况,开发一般是在Windows或 Mac机上运行的。而生产环境一般是Linux系统或集群,你的ETL解决方案应该可以无缝地在这些系统间切换。
ETL工具的功能之三:数据规模
一般ETL能通过下面的3种方式来处理大数据。
并发:ETL过程能够同时处理多个数据流,以便利用现代多核的硬件架构。
分区:ETL能够使用特定的分区模式,将数据分发到并发的数据流中。
集群:ETL过程能够分配在多台机器上联合完成。
Kettle是基于Java的解决方案,可以运行在任何安装了Java虚拟机的计算机上(包括Windows、Linux和Mac)。转换里的每个步骤都是以并发的方式来执行,并且可以执行多次,这样加快了处理速度。
Kettle在运行转换时,根据用户的设置,可以将数据以不同的方式发送到多个数据流中(有两种几本发送方式:分发和复制)。分发类似与分发扑克牌,以轮流的方式将每行数据只发给一个数据流,复制是将每行数据发给所有数据流。
为了更精确控制数据,Kettle还使用了分区模式,通过分区可以将同一特征的数据发送到同一个数据流。这里的分区只是概念上类似于数据库的分区。
Kettle并没有针对数据库分区有什么功能。
至于Kettle的扩展集群,这个很简单理解,不多赘述。
ETL工具的功能之四:设计灵活性
一个ETL工具应该留给开发人员足够的自由度来使用,而不能通过一种固定的方式来限制用户的创造力和设计的需求。ETL工具可以分为基于过程的和基于映射的。
基于映射的功能只在源数据和目的数据之间提供了一组固定的步骤,严重限制了设计工作的自由度。基于映射的工具一般易于使用,可快速上手,但是对于更复杂的任务,基于过程的工具才是组好的选择。
使用Kettle这样基于过程的工具,根据实际的数据和也许需求,可以创建自定义的步骤和转换。
ETL工具的功能之五:复用性
设计完的ETL转换应该可以被复用,这是非常重要的。复制和粘贴已经存在的转换步骤是最常见的一种复用,但这不是真正意义上的复用。
Kettle里有一个映射(子转换)步骤,可以完成转换的复用,该步骤可以将一个转换作为其他转换的子转换。另外转换还可以在多个作业里多次使用,同样作业也可以为其他作业的子作业。
ETL工具的功能之六:扩展性
大家都知道,几乎所有的ETL工具都提供了脚本,以编程的方式来解决工具本身不能解决的问题。另外,还有少数几款ETL工具可以通过API或其他方式为工具增加组件。使用脚本语言写函数,函数可以被其他转换或脚本调用。
Kettle提供了上述的所有功能。Java脚本步骤可以用来开发Java脚本,把这个脚本保存为一个转换,再通过映射(子转换)步骤,又可以变为一个标准的可以复用的函数。实际上,并不限于脚本,每个转换都可以通过这种映射(子转换)方式来复用,如同创建了一个组件。Kettle在设计上就是可扩展的,它提供了一个插件平台。这种插件架构允许第三方为Kettle平台开发插件。
大家要清楚,Kettle里的所有插件,即使是默认提供的组件,实际上也都是插件。内置的第三方插件和Pentaho插件的唯一区别就是技术支持。
假设你买了一个第三方插件(例如一个SugarCRM的连接),技术支持由第三方提供,而不是由Pentaho提供。
ETL工具的功能之七:数据转换
ETL项目很大一部分工作都是在做数据转换。在输入和输出之间,数据要经过校验、连接、分隔、合并、转置、排序、合并、克隆、排重、过滤、删除、替换或者其他操作。在不同机构、项目和解决方案里,数据转换的需求都大不相同,所以很难说清一个ETL工具最少应该提供哪些转换功能。但是呢,常用的ETL工具(包括Kettle)都提供了下面一些最基本的整合功能:
缓慢变更维度
查询值
行列转换
条件分隔
排序、合并、连接
聚集
ETL工具的功能之八:测试和调试
这个很简单,不多赘述,后续博客有实战。
ETL工具的功能之九:血统分析和影响分析
任何ETL工具都应该有一个重要的功能:读取转换的元数据,它是提取由不同转换构成的数据流的信息。
血统分析和影响分析是基于元数据的两个相关的特性。
血统是一种回溯性的机制,它可以查看到数据的来源。
影响分析是基于元数据的另一种分析方法,可以分析源数据对随后的转换以及目标表的影响。
ETL工具的功能之十:日志和审计
数据仓库的目的就是要提供一个准确的信息源,因此数据仓库里的数据应该是可靠的、可信任的。为了保证这阵可靠性,同时保证可以记录下所有的数据转换操作,ETL工具应该提供日志和审计功能。
日志可以记录下在转换过程中执行了哪些步骤,包括每个步骤开始和结束时间戳。
审计可以追踪到对数据做的所有操作,包括读行数、转换行数、写行数。
大数据之ETL工具Kettle的--1功能介绍的更多相关文章
- 开源ETL工具kettle系列之常见问题
开源ETL工具kettle系列之常见问题 摘要:本文主要介绍使用kettle设计一些ETL任务时一些常见问题,这些问题大部分都不在官方FAQ上,你可以在kettle的论坛上找到一些问题的答案 1. J ...
- 可用于Hadoop下的ETL工具——Kettle
看大家分享了好多hadoop相关的一些内容,我为大家介绍一款ETL工具——Kettle. Kettle是pentaho公司开源的一款ETL工具,跟hadoop一样,也是java实现,其目的就是做 ...
- Data Lake Analytics,大数据的ETL神器!
0. Data Lake Analytics(简称DLA)介绍 数据湖(Data Lake)是时下大数据行业热门的概念:https://en.wikipedia.org/wiki/Data_lake. ...
- CentOS6安装各种大数据软件 第一章:各个软件版本介绍
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- Kettle实现数据抽取、转换、装入和加载数据-数据转移ETL工具
原文地址:http://www.xue51.com/soft/5341.html Kettle是来自国外的一款开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行,绿色无需 ...
- 大数据测试之ETL测试工具和面试常见的问题及答案
转载自: http://www.51testing.com/html/87/n-3722487.html 概述 商业信息和数据对于任何一个企业而言都是至关重要的.现在很多公司都投入了大量的人力.资金和 ...
- ETL工具--kettle篇(17.10.09更新)
ETL是EXTRACT(抽取).TRANSFORM(转换).LOAD(加载)的简称,实现数据从多个异构数据源加载到数据库或其他目标地址,是数据仓库建设和维护中的重要一环也是工作量较大的一块.当前知道的 ...
- 大数据之ETL设计详解
ETL是BI项目最重要的一个环节,通常情况下ETL会花掉整个项目的1/3的时间,ETL设计的好坏直接关接到BI项目的成败.ETL也是一个长期的过程,只有不断的发现问题并解决问题,才能使ETL运行效率更 ...
- ETL工具kettle基本使用
1.下载kettle:https://sourceforge.net/projects/pentaho/files/Data%20Integration/7.0/pdi-ce-7.0.0.0-25.z ...
随机推荐
- eclipse里面的时间错误,比电脑系统时间慢了8个小时
eclipse里面的时间错误,比电脑系统时间慢了8个小时 解决办法: 打开<eclipse安装目录>/eclipse.ini文件 在文件末尾追加 -Duser.timezone=Asia/ ...
- write()和prinln()的区别?
输出数字不同: write()输出数字转换为字符,println原样输出. 输出null不同: write()输出引用类型的时候调用的toString转换为String数据,因此如果对象为null那么 ...
- JS如何利用定时器实现长按事件
本篇文章由:http://xinpure.com/js-how-to-use-timer-press-event/ JS 原生事件并没有长按事件,但是我们可以利用一些原有的事件,来实现长按事件 任务需 ...
- HDUOJ-----1541 Stars
Stars Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- Mustache模板引擎
Mustache是一个Logic-Less模板引擎,即:零逻辑引擎,原因在于它只有标签,没有流程控制语句,这是它与其它模板引擎不同的地方. Mustache小巧玲珑,几乎用各种语言都实现了一遍. Mu ...
- 在Android 开发中使用 SQLite 数据库笔记
SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PH ...
- java容器详细解析(转)
:在java开发中我们肯定会大量的使用集合,在这里我将总结常见的集合类,每个集合类的优点和缺点,以便我们能更好的使用集合.下面我用一幅图来表示 其中淡绿色的表示接口,红色的表示我们经常使用的类. 1: ...
- 1.Java基础-面向对象编程思想(封装继承多态接口)
封装: 1.定义:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别. 2.封装的目的是:增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的 ...
- api 和 C# 里的接口的区别?
从狭义上讲,接口指的是借由 interface 定义的结构,接口中只对方法做定义,不做实现.具体实现由最终实现接口的类提供. interface 作为一种类型,可以用于定义方法,我们只关心类实现了接口 ...
- AOE网与关键路径简介
前面我们说过的拓扑排序主要是为解决一个工程能否顺序进行的问题,但有时我们还需要解决工程完成需要的最短时间问题.如果我们要对一个流程图获得最短时间,就必须要分析它们的拓扑关系,并且找到当中最关键的流程, ...