kettle分区应用案例
kettle入门例子大全

Kettle 培训技术文档0507Etl 介绍ETL(Extract—Transform—Load的缩写,即数据抽取、转换、装载的过程),对于金融IT 来说,经常会遇到大数据量的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可少。
Kettle是一款国外开源的etl工具,纯java编写,绿色无需安装,数据抽取高效稳定。
Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
kettle 部署运行将kettle2.5。
1文件夹拷贝到本地路径,例如D 盘根目录。
双击运行kettle文件夹下的spoon.bat文件,出现kettle欢迎界面:稍等几秒选择没有资源库,打开kettle主界面创建transformation,job点击页面左上角的创建一个新的transformation,点击保存到本地路径,例如保存到D:/etltest下,保存文件名为EtltestTrans,kettle默认transformation 文件保存后后缀名为ktr点击页面左上角的创建一个新的job,点击保存到本地路径,例如保存到D:/etltest下,保存文件名为EtltestJob,kettle默认job文件保存后后缀名为kjb 创建数据库连接在transformation页面下,点击左边的【Main Tree】,双击【DB连接】,进行数据库连接配置。
connection name自命名连接名称Connection type选择需要连接的数据库Method of access选择连接类型Server host name写入数据库服务器的ip地址Database name写入数据库名Port number写入端口号Username写入用户名Password写入密码例如如下配置:点击【test】,如果出现如下提示则说明配置成功点击关闭,再点击确定保存数据库连接。
ETL利器KETTLE实战应用解析之KETTLE应用场景和实战DEMO

1、应用场景这里简单概括一下几种具体的应用场景,按网络环境划分主要包括:∙表视图模式:这种情况我们经常遇到,就是在同一网络环境下,我们对各种数据源的表数据进行抽取、过滤、清洗等,例如历史数据同步、异构系统数据交互、数据对称发布或备份等都归属于这个模式;传统的实现方式一般都要进行研发(一小部分例如两个相同表结构的表之间的数据同步,如果sqlserver数据库可以通过发布/订阅实现),涉及到一些复杂的一些业务逻辑如果我们研发出来还容易出各种bug;∙∙前置机模式:这是一种典型的数据交换应用场景,数据交换的双方A和B网络不通,但是A和B都可以和前置机C连接,一般的情况是双方约定好前置机的数据结构,这个结构跟A和B的数据结构基本上是不一致的,这样我们就需要把应用上的数据按照数据标准推送到前置机上,这个研发工作量还是比较大的;∙∙文件模式: 数据交互的双方A和B是完全的物理隔离,这样就只能通过以文件的方式来进行数据交互了,例如XML格式,在应用A中我们开发一个接口用来生成标准格式的XML,然后用优盘或者别的介质在某一时间把XML数据拷贝之后,然后接入到应用B上,应用B 上在按照标准接口解析相应的文件把数据接收过来;∙综上3种模式如果我们都用传统的模式无疑工作量是巨大的,那么怎么做才能更高效更节省时间又不容易出错呢?答案是我们可以用一下Kettle-_-!2、DEMO实战2、1 实例1:数据库TestA中的UserA表到数据库TestB的UserB表1)为方便演示,我这边把Sql脚本贴出来,大家直接复制在sqlserver中运行即可,sql脚本如下:简单表之间交换2)Kettle实现方式功能简述:数据库TestA中的UserA表到数据库TestB的UserB表;实现流程:建立一个转换和一个作业Job;A:建立一个转换:打开Kettle.exe,选择没有资源库,进入主界面,新建一个转换,转换的后缀名为ktr,转换建立的步骤如下:步骤1:创建DB连接,选择新建DB连接,如下图,我们输入相应的Sqlserver配置信息之后点击Test按钮测试是否配置正确!我们需要建立两个DB连接,分别为TestA和TestB;步骤2:建立步骤和步骤关系,点击核心对象,我们从步骤树中选择【表输入】,如下图,这样拖拽一个表输入之后,我们双击表输入之后,我们自己可以随意写一个sql语句,这个语句表示可以在这个库中随意组合,只要sql语句没有错误即可,我这里只是最简单的把TestA中的所有数据查出来,语句为select * from usersA。
kettle案例 综合案例 构建dvd

kettle案例综合案例构建dvd
构建DVD租赁商店数据仓库是一个复杂的过程,需要综合运用Kettle工具和相关数据表。
下面是一个简单的案例介绍:
首先,需要了解数据库sakila中包含的16张数据表,包括actor(演员)表、address (地址)表、category(类别)表等。
然后,使用Kettle工具将数据加载到日期维度表dim_date 中。
具体步骤如下:
1. 创建一个转换load_dim_date,并添加生成记录控件、增加序列控件、JavaScript 代码控件、表输出控件以及Hop跳连接线。
2. 配置生成记录控件,在“限制”处添加生成的日期,默认为10,这里改为3650,即生成10年的日期(10*365);在“字段”框添加字段language(语言)、country_code(国家码)、initial_date(初始化的日期),对生成的日期进行初始化。
最后,将DVD租赁商店的数据与维度表进行关联和分析,以构建一个完整的数据仓库。
kettle应用实践(转)

kettle应用实践(转)今天早上在网上看到了kettle发布了最新的版本,忽然想起最近其实做了不少工作应该是ETL工具的拿手好戏,赶紧下载下来看看,看是否能够在实际的工作中应用起来。
顺便讲一下,为啥看到kettle会两眼发光。
最近写了好几个小程序,用于从一个ftp去获取数据,然后转发至另一个ftp去,或者是从一个数据库获取数据然后保存至本地的数据库中,使用的是jdk中的Timer实现的定时调度,本来也没什么问题,连续运行几个月都不会出错。
可是最近网络不是太好,周期性抽风,ping包时,每5分钟大概会丢7-8个包,从而导致程序也会假死,过一段时间后就不正常干活了,估计是因为用了数据库连接池的问题,要是每次发起数据库连接可能就不会有问题了,偷懒也不想改了,因为网络最终肯定是会修好的 :-) 但是想试试ETL工具,因为后面还有一些类似的东西要处理,不想写代码了,用别人的轮子感觉比较好,呵呵首先下载了kettle的最新版,kettle3.1,解压后即可运行,一般的开发人员稍微摸索一下,看看例子简单的转换还是会做的,今天小试了一把,有几个注意点记下来。
1.使用资源库(repository)登录时,默认的用户名和密码是admin/admin2.当job是存放在资源库(一般资源库都使用数据库)中时,使用Kitchen.bat执行job时,需使用如下的命令行:Kitchen.bat /rep kettle /user admin /pass admin /job job名3.当job没有存放在资源库而存放在文件系统时,使用Kitchen.bat执行job时,需使用如下的命令行:Kitchen.bat /norep /file user-transfer-job.kjb4.可以使用命令行执行job后,就可以使用windows或linux的任务调度来定时执行任务了在一开始使用命令行方式执行job时,总是报如下的错误,琢磨了好长时间总算整明白正确的方式了。
Kettle5.某使用步骤带案例解析详细版

Kettle5.某使用步骤带案例解析详细版Kettle使用方法介绍1、Kettle概念Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix 上运行,绿色无需安装,数据抽取高效稳定。
Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。
Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
2、下载和部署下载kettle压缩包,因kettle为绿色软件,解压缩到任意本地路径即可3、Kettle环境配置1.安装JDK(略)2.测试JDK安装成功(略)3.运行KettleWindows下找到$KETTLE_HOME/spoon.dat,双击运行欢迎界面如下图所示:4、KETTLE组件介绍与使用4.1 Kettle使用Kettle提供了资源库的方式来整合所有的工作,;1)创建一个新的transformation,点击保存到本地路径,例如保存到D:/etltest下,保存文件名为Trans,kettle默认transformation文件保存后后缀名为ktr;2)创建一个新的job,点击保存到本地路径,例如保存到D:/etltest下,保存文件名为Job,kettle默认job文件保存后后缀名为kjb;4.2 组件树介绍4.2.1Transformation 的主对象树和核心对象分别如下图:Transformation中的节点介绍如下:Main Tree:菜单列出的是一个transformation中基本的属性,可以通过各个节点来查看。
DB连接:显示当前transformation中的数据库连接,每一个transformation的数据库连接都需要单独配置。
Kettle使用手册及测试案例

一、【kettle】window安装与配置1、下载kettle包,并解压2、安装jdk,并配置java环境a).打开我的电脑--属性--高级--环境变量b).新建系统变量JA V A_HOME和CLASSPATH变量名:JA V A_HOME变量值:C:\Program Files\Java\jdk1.7.0[具体路径以自己本机安装目录为准]变量名:CLASSPATH变量值:.;%JA V A_HOME%\lib\dt.jar;%JA V A_HOME%\lib\tools.jar;c). 选择“系统变量”中变量名为“Path”的环境变量,双击该变量,把JDK安装路径中bin目录的绝对路径,添加到Path变量的值中,并使用半角的分号和已有的路径进行分隔。
变量名:Path变量值:%JA V A_HOME%\bin;%JA V A_HOME%\jre\bin;3、配置kettle环境在系统的环境变量中添加KETTLE_HOME变量,目录指向kettle的安装目录:D:\kettle\data-integration4、启动spoonWindows直接双击批处理文件Spoon.bat具体路径为:kettle\data-integration\Spoon.batLinux 则是执行spoon.sh,具体路径为:~/kettle/data-integration/spoon.sh二、使用Kettle同步数据同步数据常见的应用场景包括以下4个种类型:➢ 只增加、无更新、无删除➢ 只更新、无增加、无删除➢ 增加+更新、无删除➢ 增加+更新+删除只增加、无更新、无删除对于这种只增加数据的情况,可细分为以下2种类型:1) 基表存在更新字段。
通过获取目标表上最大的更新时间或最大ID,在“表输入”步骤中加入条件限制只读取新增的数据。
2) 基表不存在更新字段。
通过“插入/更新”步骤进行插入。
插入/更新步骤选项:只更新、无增加、无删除通过“更新”步骤进行更新。
kettle多表关联循环分页迁移数据的完整例子

kettle多表关联循环分页迁移数据的完整例子Kettle是一款强大的ETL工具,它可以帮助我们高效地进行数据迁移、转换和处理。
在实际应用中,常常需要处理多张表之间的关联关系,并且可能会需要进行循环分页的操作。
下面我们将给出一个完整的例子,来说明如何使用Kettle实现这样的需求。
首先,我们需要明确要处理的数据表以及它们之间的关系。
假设我们需要迁移一个电商平台的数据,其中包括商品表、订单表和用户表。
商品表和订单表通过商品ID关联,订单表和用户表通过用户ID关联。
接下来,我们需要进行分页操作,以便逐页地读取数据并进行处理。
Kettle提供了一个称为"Table Input"的组件,它可以从数据库中读取数据。
我们可以配置该组件来指定要读取的表、查询条件以及每页读取的记录数。
在组件的"SQL"字段中,我们可以编写SQL语句来告诉Kettle如何获取数据。
接下来,我们需要处理关联关系。
假设我们要将商品表中的商品名称添加到订单表中。
我们可以使用"Table Input"组件读取商品表的数据,并将结果存储在一个变量中。
然后,我们可以使用"Stream Lookup"组件来将商品名称添加到订单表中。
在"Stream Lookup"组件的配置中,我们可以指定要关联的字段以及要进行关联的表。
通过这样的配置,Kettle会自动根据关联关系将商品名称添加到订单表中。
然后,我们需要进行循环处理。
在Kettle中,我们可以使用"Copy rows to result"组件来将数据分页处理,并将结果发送到下一步的处理中。
在该组件的配置中,我们可以指定每页的记录数、每页的起始位置以及最大的记录数。
通过这样的配置,我们可以实现循环处理的效果。
最后,我们需要将结果写入目标数据库。
Kettle提供了一个称为"Table Output"的组件,它可以将数据写入数据库。
kettle的并行,集群和分区

kettle的并行,集群和分区January 4th, 2011 by ahuoo Leave a reply »当你有很多数据要处理的时候,能够有效地使用所有的计算资源是非常重要的。
不管是台个人电脑,还是有数百台服务器,你都想让Kettle能尽可能的使用所有可用的计算资源,并在可接受的时间范围内获取执行结果。
在这一章节,我们将解开kettle的转换和作业在垂直扩展和水平扩展方面的秘密。
垂直扩展是尽可能的使用单台服务器上的多CPU核。
水平扩展是使用多台机器资源,使他们并行计算。
这两种方法都是ETL子系统的一部分(#31,并行/流水线系统)。
章节的第一部分先谈谈转换内部的并行机制和多种使用其进行垂直扩展的方法。
然后我们讲解怎样在子服务器集群环境下进行水平扩展转换。
最后我们讲讲kettle分区的一些具体细节,利用分区进一步提升并行计算的性能。
一、多线程在章节2中,我们已经了解了转换的基本组成部分是步骤,而且每个步骤是并行执行的。
现在我们将更深入这一话题,解释kettle的多线程能力怎样使你更充分利用机器所有的计算资源,垂直扩展一个转换。
默认情况下,转换中的每一个步骤都是在单一隔离的线程里面并行的执行。
但可以为任何单一的步骤增加线程的数目,也可叫做复制。
在15章里我们也解释过,这种办法能够提高那些CPU 时间消耗量大的转换步骤的性能。
[*1]让我们看一个简单的例子,如图16-1,其中所有数据的记录都被一个User Defined Java Class 步骤处理图16-1:一个简单的转换你可以右键这个User Defined Java Class步骤,选择菜单中的“改变开始复制的数量”,如果你指定4份,你将看到转换的图形表示如下,见图16-2图16-2:在多个复制下运行一个步骤这个“4x”的符号指示了4个复制将在运行的时候被启动。
注意:所有步骤复制只维护一份步骤的描述,[*2]为了理解接下来的章节,这儿定义几个专业术语:∙Step: 描叙需要做的某项工作的定义或元数据∙Step copy: 在步骤里定义的执行某项工作的一个并行工作线程换句话说,一个step仅仅是任务的定义,而一个step copy则表示一个实际执行的任务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Kettle分区应用案例
实际生产中,经常会有地市数据上报或者省厅省厅数据下发,而且各地市的表结构都相同的需求。
针对这种需求,假如有10个地市,一般会写10个抽取。
这样不仅做了重复工作,而且增加了维护负担。
通过kettle分区功能,可以只写一个抽取,实现多地市数据汇集和下发功能。
下面通过一个案例,简单介绍下kettle分区使用。
1. 创建数据库连接
新建数据库连接,点击集群选项,此处假定所有节点都是相同类型数据库。
如下图,创建含有两个节点的集群连接。
2. 创建分区模式
新建数据库分区
点击导入分区,可以从刚刚创建的数据库连接中导入分区,点击ok保存。
3. 创建抽取模型
整个模型如下
表输入中选择刚刚创建的集群连接,输入SQL语句。
这里获取查询SQL语句及预览功能不能直接使用。
文本文件输出组建配置如下
右键点击表输入,选择分区选项,选择使用数据库分区,分区类型如下:None:不分区
Mirror to all partitions:使用数据库分区
Remainder of division:使用kettle标准分区
4. 结果验证
源表数据如下:
数据结果文件如下:。