`
ghl116
  • 浏览: 161625 次
  • 性别: 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源码分析文档,包括源码数据处理流程,源码修改

    尚硅谷Kettle笔记

    尚硅谷Kettle笔记

    kettle学习笔记.docx

    1、windows、linux服务上kettle的安装方案 2、Spoon、Kitchen、Pan、Carte命令使用 3、数据库资源集操作案例

    kettle学习笔记

    Kettle详细的学习笔记,能帮助初学者很快掌握ETL免费开源工具的使用。

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

    Kettle 7.1 的中文使用文档,内容挺详细的, 非常适合新手入门。

    kettle学习和使用文档

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

    BI Kettle中文文档汇集

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

    Kettle学习方式示例

    该资源是简单的kettle学习记录,如何去抽取数据库数据,进行数据的操作,最后输出到数据库,可以跨数据库操作。

    kettle学习资料大全

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

    ETL之kettle基础-PPT讲解

    内容概要:ETL之kettle包含26张PPT,kettle安装、使用、如何连接等,使用PDI9.2演示、什么是ETL、什么是Kettle、kettle安装、kettle目录结构、转换和作业、kettle操作、数据库连接、注意事项。 适合人群:具备一定...

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

    包含博客中使用到的所有案例, 还有kettle的安装包 KETTLE视频教程

    KETTLE JAVA API学习

    KETTLE JAVA API学习KETTLE JAVA API学习KETTLE JAVA API学习KETTLE JAVA API学习KETTLE JAVA API学习

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

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

    Kettle操作手册入门笔记-20211113

    基于pdi7.1版本的开发笔记(含kettle环境配置、循环实现等)

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

    ETL学习笔记之Kettle下载与部署与使用,安装与操作说明。

    kettle使用事务的转换

    kettle使用事务的转换

Global site tag (gtag.js) - Google Analytics