最近公司要用一个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
分享到:
相关推荐
Kettle4.1 是该工具的一个版本,其源码分析有助于深入理解其内部工作原理,便于自定义开发或优化。 在开始源码分析之前,首先需要获取和编译 Kettle4.1 的源码。这可以通过 SVN 从官方仓库中下载,网址为 svn://...
【Kettle学习笔记】 Kettle,也称为Pentaho Data Integration (PDI),是一种强大的数据集成工具,广泛用于ETL(提取、转换、加载)过程,实现数据迁移和整合。Kettle提供了丰富的图形化界面和命令行工具,使得数据...
因此,当我们需要使用Kettle操作ClickHouse时,必须自定义配置和驱动程序来实现这一目标。 ClickHouse是一个高性能的列式数据库管理系统(Column-Oriented DBMS),特别适合于在线分析处理(OLAP)和大数据处理场景...
尚硅谷Kettle笔记
通过学习这些案例、安装和使用Kettle,以及观看视频教程,用户将能够掌握数据集成的核心技能,并有能力解决实际工作中的数据问题。同时,KettleRep的存在也提示了团队合作和项目管理的重要性,是提升工作效率和保证...
通过深入学习和实践Kettle 7.1的中文使用手册,用户能够熟练掌握数据集成的技巧,无论是在数据清洗、数据分析还是大数据处理方面,都能发挥出强大的效能。同时,了解Kettle的高级特性和插件体系,将进一步提升数据...
以下是一些关于Kettle的学习方式和关键知识点的详细说明: 1. **创建转换**: - 转换是Kettle的基本工作单元,它由一系列相互连接的步骤组成,用于完成特定的数据处理任务。在Kettle中,你可以通过点击"转换"来...
通过学习这份《Kettle 5.4中文使用说明文档》,用户不仅能掌握Kettle的基本用法,还能深入了解其高级特性和最佳实践,从而在实际工作中更好地利用Kettle进行数据处理和ETL流程构建。无论你是初学者还是经验丰富的...
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。 Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
【标题】:“Kettle学习笔记” Kettle,也被称为Pentaho Data Integration(PDI),是一种强大的ETL(Extract, Transform, Load)工具,用于在不同的数据源之间进行数据迁移和转换。它由社区驱动,提供了图形化的...
ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于 金融IT 来说,经常会遇到大数据量的处理,转换,迁移,所以了解并掌握一种 etl工具的使用,必不可少。...是学习kettle的好资料!
BI Kettle中文文档汇集 ELT平台操作手册-KETTLE.pdf ETL工具kettle.pdf etl工具kettle公司学习文档.pdf ETL工具kettle学习总结.pdf ... 我的kettle学习笔记.pdf 测试ETL工具都应测试哪些方面.pdf
里面包含了ETL工具KETTLE实例手册、ETL工具Kettle用户手册、kettle各个组件用法、Kettle培训手册、Kettle入门-教程、kettle入门例子大全、Kettle相关内容及实验、kettle_4.2.1基础教程。
4.1 Kettle 使用 Kettle 提供了资源库的方式来整合所有的工作。用户可以创立一个新的 transformation 或 job,并保存到本地路径。Transformation 的文件后缀名默认为 ktr,而 job 的文件后缀名默认为 k。 4.2 组件...
【Kettle在Linux的安装使用】知识详解 Kettle,又称Pentaho Data Integration (PDI),是一款开源的数据集成工具,常用于数据提取、转换和加载(ETL)过程。在Linux环境中安装和使用Kettle,需要遵循一定的步骤。...
【Kettle学习资料大全20191012.rar】是一个包含全面的Kettle学习资源的压缩包,其中可能涵盖了各种文档、教程、实战案例等,旨在帮助用户深入理解和掌握Pentaho Data Integration(Kettle)这一强大的ETL(提取、...
### ETL学习笔记之Kettle下载与部署与使用 #### 一、Kettle概念与应用场景 Kettle是一款功能强大的开源ETL(Extract-Transform-Load)工具,它使用纯Java编写,因此可以在多种操作系统上运行,包括Windows、Linux...