`
ghl116
  • 浏览: 163887 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

kettle4.1学习使用笔记

 
阅读更多

最近公司要用一个ETL工具,Google了一下,发现Kettle用的人好像比较多,于是下载下来试用了一下!

首先从网上下载了一些教程学习,主要是针对Spoon设计器的,大部分都比较简单,然后自己摸索,发现Kettle的功能还是很强大的,但是也发现了一些问题。

 

一、表输出

使用Spoon设计器的时候,在转换当中,有一个表输出的功能,如果不勾选Specify database field 复选框,则表输出的字段必须要和输入的字段名称一致,否则会出错,即使是配置好映射关系也不行。表输出主要是把数据存到一个数据库表中,不会考虑记录是否存在,故要考虑是否重复时,应该使用插入/更新

 

二、资源库 

Kettle在Spoon中的设计的转换或Job可以保存为XML文件,也可以保存到资源库中,在Tools下可以找到该选项

资源库分为数据库类型和目录类型

数据库类型就是把Kettle设计的转换或者Job存到数据库当中去

这个版本的资源库表相当的多,差不多有40多个,

下面是我从网上找的一段介绍,主要的表都有,自己觉得看一下资源库表的字段和内容对理解Kettle有一定的好处,特别是API:

 

1. R_DATABASE            R_DATABASE_ATIRIBUTE        R_DATABASE_CONTYPE        R_DATABASE_TYPE
2. R_JOB            R_JOB_HOP            R_JOBENTRY            R_JOBENTRY_ATIRIBUTE            R_JOBENTRY_TYPE
3. R_LOG            R_LOGLEVEL
4. R_STEP            R_STEP_DATABASE
5. R_TRANS_ATIRIBUTE        R_TRANS_HOP            R_TRANS_CONDITION
6. R_USER            R_VALUE                R_PERMISSION
7. R_CLUSTER            R_CLUSTER_SLAVE            R_SLAVE
8. R_PARTITION            R_PARTITION_SCHEMA

1 . database的链接信息.在R_DATABASE_TYPE 表里面包含了所有支持的数据库链接信息,一共是25种,算是支持非常的多了.

2. 任务设计部分的表,R_JOB_HOP 是指两个数据之间的链接部分, R_JOBENTRY_TYPE 是目前支持的操作种类,一共有27种,包括Transformation , Job , Shell , Mail , SQL ,FTP ,Table exists ,File Exists , JavaScript , Secure FTP , HTTP , Create File , Delete File , Wait for File , Put a file with SFTP , File Compare , BulkLoad into Mysql , Display Msgbox Info , Wait for , Zip file , XSL Transformatio, BulkLoad from Mysql into File , Abort Job , Get mails from POP , Ping a host , Dummy Job Entry .
其中BulkLoad 只跟Mysql有关,我感觉很奇怪,BulkLoad 是数据库批量处理的方式,大型数据库都是支持的,比如oracle就有sqlloader来支持批量处理,其他的大型数据库应该也有吧,而且在transform里面kettle也有oracle的支持,在任务设计的时候就只有mysql的支持,不知道什么原因.
最后一个Dummy Job Entry 就是什么都不做.

3. Log记录,loglevel 一共有6种,Nothing at all , Minimal loggin , Basic loggin , Detailed loggin , Debugging , RowLevel(very detailed).根据你自己的需要来选择log的级别.

4. 每一步操作的表格与你使用的数据库

5. 转换的定义.一共有70种不同的转化,你不会想看到全部列出来的,其中有几种很有用的,比如DimensionLookup , 它的解释就是"在一个数据仓库里更新一个渐变维,或者在这个维里查询信息.
  还有基于关键字删除记录,
  cuebOutput, 把数据写入一个cube,
  从一个excel文件读数据,执行一个sql脚本,调用数据库的储存过程,
  OraBulkLoader ,调用oracle 的bulk loader to load data ,(应该是指Oracle的SQLLOADER吧).
  ProSAPCONN, 从一个SAP系统取数据.
  MergeRows,合并两个数据流, 并根据某个关键字排序.  这两个数据流被比较,以标识相等的、变更的、删除的和新建的记录.

插一句关于merge的概念,从网上copy下来的:
MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。
 
6. 用户与权限.一开始建立的用户有两种,admin和guest ,权限有5种,Read only access , Administrator , Use transformations , Use Jobs , Use schemas .

7. pentaho官方网站上面有一个新闻是关于在mysql的
Kettle集群新记录:
最近Kettle集群基于 Amazon Elastic Computing Cloud做了一次测试,单台服务器输出4000 rows/sec ,数据库为MySQL. 如果你发送数据通过sockets从一个master到5个slave servers, 你将获得 5x4000 row inserts/sec。集群的效果非常好.

我个人也做过测试。数据库是oracle 10.2.0.1,内网连接,从一台机器的oracle到本地机器,没有集群,速度也大概是4000 多一点 ,数据量大概是16万。

8 . 数据库分区是数据库的高级特性之一,oracle的XE版和Enterprise版本的有一个差别就是XE版不支持分区。

三、kettle与应用程序的集成

kettle是java开源的ETL工具,因此可以很容易的与java项目进行集成,

我主要是参考了这篇文章http://kettleking.iteye.com/blog/1108451 ,其中提到的Pentaho Kettle Solutions源码,下载下来可以参考,

 

 

四、日志部分:在进行数据转换的时候,日志是一个非常重要的部分,在Spoon中我们可以看到数据处理情况,但是如果我们把Kettle集成到项目中,就需要我们把处理情况存到日志表里了。资源库里有一个叫r_LOG的表,但是好像没有用到。真正的日志设置是在转换属性里的设置

 

 其中有四个日志标准,Transformation,Step,performance,logging channels,各个字段都有英文的详细说明,

如果数据库中没有这张表,需要点SQL按钮,kettle会在数据库中建立这张表,每一个标准需要新建立一张不同表

 

五:Job的日志问题

Job的功能比转换强大很多,job得到的日志记录是根据转换的日志设置得到的,我在用的时候发现如果job不设置重复,则没有问题,资源库中的日志记录是正确的,但是如果设置为重复,则日志中logdate的日期在变化,但是LINES_READ等字段为空,不会有值,

还有就是在日志设置时不能勾选LOG_FIELD字段,否则会报错。

六:出错处理

在转换过程中,如果有一条记录的长度不符合目标表,无法插入,则运行会自动停止, 在日志表中的ERRORS字段中会显示出出错的个数

除非设置了错误处理,在某一步右键,点击定义错误处理

 

 

此时,如果有些记录不符合条件,则会把不符合条件的记录输出到另外的表中,你也可以选择输出到文件中去,同时日志表的LINES_REJECTED会显示出不符合条件的个数,此时ERRORS字段的值为0

这是我最近学习使用过程中碰到的一些问题,自己摸索的经验,做个笔记,以后好复习。

  • 大小: 9.1 KB
  • 大小: 11.1 KB
  • 大小: 27.4 KB
  • 大小: 15 KB
  • 大小: 8.4 KB
分享到:
评论
4 楼 beisuole 2014-07-17  

    [*]
3 楼 alexkaleo 2014-04-13  
看到别人有用这个。下来试试看。
2 楼 zhaofangcheng 2013-07-24  
楼主有没有遇到过 kettle导出的资源库正常,但是在另一台机器上导入的时候提示 unknown protocol:c
1 楼 liujian514016713 2012-10-31  
请问一下我这个加了日志以后就报空指针异常是怎么回事

相关推荐

    kettle4.1源码分析

    Kettle4.1 是该工具的一个版本,其源码分析有助于深入理解其内部工作原理,便于自定义开发或优化。 在开始源码分析之前,首先需要获取和编译 Kettle4.1 的源码。这可以通过 SVN 从官方仓库中下载,网址为 svn://...

    kettle学习笔记.docx

    【Kettle学习笔记】 Kettle,也称为Pentaho Data Integration (PDI),是一种强大的数据集成工具,广泛用于ETL(提取、转换、加载)过程,实现数据迁移和整合。Kettle提供了丰富的图形化界面和命令行工具,使得数据...

    kettle连接ClickHouse驱动包

    因此,当我们需要使用Kettle操作ClickHouse时,必须自定义配置和驱动程序来实现这一目标。 ClickHouse是一个高性能的列式数据库管理系统(Column-Oriented DBMS),特别适合于在线分析处理(OLAP)和大数据处理场景...

    尚硅谷Kettle笔记

    尚硅谷Kettle笔记

    kettle学习资料、安装包、视频教程

    通过学习这些案例、安装和使用Kettle,以及观看视频教程,用户将能够掌握数据集成的核心技能,并有能力解决实际工作中的数据问题。同时,KettleRep的存在也提示了团队合作和项目管理的重要性,是提升工作效率和保证...

    Kettle 7.1 中文使用手册.docx.zip

    通过深入学习和实践Kettle 7.1的中文使用手册,用户能够熟练掌握数据集成的技巧,无论是在数据清洗、数据分析还是大数据处理方面,都能发挥出强大的效能。同时,了解Kettle的高级特性和插件体系,将进一步提升数据...

    Kettle学习方式示例

    以下是一些关于Kettle的学习方式和关键知识点的详细说明: 1. **创建转换**: - 转换是Kettle的基本工作单元,它由一系列相互连接的步骤组成,用于完成特定的数据处理任务。在Kettle中,你可以通过点击"转换"来...

    KETTLE5.4中文使用说明文档

    通过学习这份《Kettle 5.4中文使用说明文档》,用户不仅能掌握Kettle的基本用法,还能深入了解其高级特性和最佳实践,从而在实际工作中更好地利用Kettle进行数据处理和ETL流程构建。无论你是初学者还是经验丰富的...

    kettle学习和使用文档

    Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。 Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。

    kettle学习笔记

    【标题】:“Kettle学习笔记” Kettle,也被称为Pentaho Data Integration(PDI),是一种强大的ETL(Extract, Transform, Load)工具,用于在不同的数据源之间进行数据迁移和转换。它由社区驱动,提供了图形化的...

    kettle(学习手册、中文手册、Kettle使用培训文档)

    ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于 金融IT 来说,经常会遇到大数据量的处理,转换,迁移,所以了解并掌握一种 etl工具的使用,必不可少。...是学习kettle的好资料!

    BI Kettle中文文档汇集

    BI Kettle中文文档汇集 ELT平台操作手册-KETTLE.pdf ETL工具kettle.pdf etl工具kettle公司学习文档.pdf ETL工具kettle学习总结.pdf ... 我的kettle学习笔记.pdf 测试ETL工具都应测试哪些方面.pdf

    kettle学习资料大全

    里面包含了ETL工具KETTLE实例手册、ETL工具Kettle用户手册、kettle各个组件用法、Kettle培训手册、Kettle入门-教程、kettle入门例子大全、Kettle相关内容及实验、kettle_4.2.1基础教程。

    KETTLE组件介绍及使用.doc

    4.1 Kettle 使用 Kettle 提供了资源库的方式来整合所有的工作。用户可以创立一个新的 transformation 或 job,并保存到本地路径。Transformation 的文件后缀名默认为 ktr,而 job 的文件后缀名默认为 k。 4.2 组件...

    Kettle在Linux的安装使用

    【Kettle在Linux的安装使用】知识详解 Kettle,又称Pentaho Data Integration (PDI),是一款开源的数据集成工具,常用于数据提取、转换和加载(ETL)过程。在Linux环境中安装和使用Kettle,需要遵循一定的步骤。...

    Kettle学习资料大全20191012.rar

    【Kettle学习资料大全20191012.rar】是一个包含全面的Kettle学习资源的压缩包,其中可能涵盖了各种文档、教程、实战案例等,旨在帮助用户深入理解和掌握Pentaho Data Integration(Kettle)这一强大的ETL(提取、...

    ETL学习笔记之Kettle下载与部署与使用

    ### ETL学习笔记之Kettle下载与部署与使用 #### 一、Kettle概念与应用场景 Kettle是一款功能强大的开源ETL(Extract-Transform-Load)工具,它使用纯Java编写,因此可以在多种操作系统上运行,包括Windows、Linux...

Global site tag (gtag.js) - Google Analytics