java项目集成kettle_java应用程序中集成kettle.docx

41528d3028836879cd698677c3999917.gifjava应用程序中集成kettle.docx

JAVA应用程序中集成KETTLE摘要本文主要讨论如何在你自己的JAVA应用程序中集成KETTLE如果你需要在自己的JAVA应用程序中集成KETTLE,一般来说有两种应用需求,一种是通过纯设计器来设计ETL转换任务,然后保存成某种格式,比如XML或者在数据库中都可以,然后自己调用程序解析这个格式,执行这种转换,是比较抽象的一种执行方式,ETL里面转换了什么东西我们并不关心,只关心它有没有正常执行。另一种是通过完全编程的方式来实现,详细的控制每一个步骤,需要知道转换执行的成功与否,这种方式可能需要更多的理解KETTLE的API以便更好的跟你的应用程序紧密结合,不过难度也比较大,可以很好的定制你的应用程序,代价自然是入门门槛比较高。本文主要向你解释第一种KETTLE的集成方式,文中所列出的代码节选自PENTAHO,不过应用程序本身跟PENTAHO没有什么关系。PENTAHO集成KETTLE的代码主要是两个类,KETTLESYSTEMLISTENER和KETTLECOMPONENT,看名字就猜出KETTLESYSTEMLISTENER主要是起监听器的作用,它主要负责初始化KETTLE的一些环境变量,这个类主要包含四个方法STARTUP,READPROPERTIES,ENVIRONMENTINIT,SHUTDOWN,程序入口自然是STARTUP方法,然后它会调用ENVIRONMENTINIT方法,这个方法就调用READPROPERTIES方法读一个配置文件KETTLE。PROPERTIES,这个文件主要记录者KETTLE运行时可以调用的一些环境变量,关于KETTLE。PROPERTIES文件怎么用,第二篇文章“使用KETTLE设计动态转换”有提到,READPROPERTIES方法读完这个文件之后就把里面的键值对转换成变量传给KETTLE运行环境。当KETTLE运行完了之后就调用SHUTDOWN方法结束转换。KETTLESYSTEMLISTENER相对逻辑比较简单,就不多介绍,下面主要介绍重点类KETTLECOMPONENTKETTLECOMPONENT的方法主要有三种类型,一类是用来初始化工作,做一些验证工作,第二类是执行转换的方法,也是主要需要讨论的方法,第三类是取得数据结果的,有时候你需要得到转换的结果交给下一个步骤处理。下面分别讨论这三类方法。初始化KETTLECOMPONENT的初始化工作主要是验证这个转换,包括有VALIDATESYSTEMSETTINGS,INIT,VALIDATEACTION,全部都是PUBLIC方法,VALIDATESYSTEMSETTINGS会检查KETTLE使用何种方式来连接资源库。KETTLE有两种方式连接资源库,一种是纯数据库式,也就是你所有的转换全部都保存在一个数据库中,一般你在开始使用KETTLE的时候,它都会要求你建立一个资源仓库,这个资源仓库的连接方式就是你的数据库连接,你需要能够有相应的数据库驱动和对应的连接用户名和密码。另外一种连接方式是使用文本文件,也就是XML文件,在做完任何转换之后,我们都可以把转换或者JOB变成XML文件输出,这个输出文件包含你所有转换的全部信息。在示例应用中使用的是文件的连接方式,下面看一下初始化的一段代码BOOLEANUSEREPOSITORYPENTAHOSYSTEMGETSYSTEMSETTING“KETTLE/SETTINGSXML“,“REPOSITORYTYPE“,“FILES“EQUALS“RDBMS“PENTAHOSYSTEMGETSYSTEMSETTING方法只是返回一个字符串,使用的XPATH读一个XML的对应字段,下面列出SETTINGSXML文件FILESADMINADMIN可以看到其中的REPOSITORIESXMLFILE上面的一段注释,如果这个值为空会默认使用HOME/KETTLE/REPOSITORYXML文件当作资源库的连接文件,由于示例中使用的是文本文件所以没有用数据库连接,下面的REPOSITORYUSERID和REPOSITORYPASSWORD是指的KETTLE的资源库连接的用户名和密码,一般默认安装就两个,ADMIN/ADMIN和GUEST/GUEST,这里的用户名和密码不是连接数据库的用户名和密码,连接数据库的用户名和密码是在另外一个文件REPOSITORIESXML。FILE指定的值所定义的一般默认的KETTLE安装并且运行了一段时间之后,会在HOME/KETTLE目录下创建一些文件,如果你要在自己的系统中集成KETTLE的话,也需要保留这些文件,当然不一定位置是在原来的位置,关键是要让KETTLE知道这些文件放在哪。执行转换当读完了这些配置文件并且验证了之后,KETTLECOMPONENT就开始把前面读到的转换文件或者资源库类型变成KETTLE的API,这主要是在CUTEACTION()方法里面进行,它当然根据连接方式也分两种执行类型1文本执行方式2资源库连接方式文本执行方式需要接受一个你指定的运行转换的文件或者JOB的文件,然后把这个XML文件解析成KETTLE能够执行的模式,根据执行的类型又可以分成两种1TRANS任务2JOB任务两个执行的逻辑差不多,下面先介绍TRANS的执行方式执行TRANS任务TRANSMETANEWTRANSMETAFILEADDRESS,REPOSITORY,TRUETRANSMETASETFILENAMEFILEADDRESS然后它会调用CUTETRANSATIONTRANSMETATRANSMETA,LOGWRITERLOGWRITER这个方法是真正的把前面的来的TRANSMETA转换成TRANS对象,等待下一步的执行TRANSTRANSNEWTRANSLOGWRITER,TRANSMETALISTSTEPLISTTRANSGETSTEPSFORINTSTEPNO0STEPNOSTEPLISTSIZESTEPNO{STEPMETADATACOMBISTEPSTEPMETADATACOMBISTEPLISTGETSTEPNOIFSTEPSTEPNAMEEQUALSSTEPNAME{①ROWROWTRANSMETAGETSTEPFIELDSSTEPNAME//CREATETHEMETADATATHATTHEPENTAHORESULTSETNEEDSSTRINGFIELDNAMESROWGETFIELDNAMESSTRINGCOLUMNSNEWSTRING1FIELDNAMESLENGTHFORINTCOLUMN0COLUMNFIELDNAMESLENGTHCOLUMN{COLUMNS0COLUMNFIELDNAMESCOLUMN}②MEMORYMETADATAMETADATANEWMEMORYMETADATACOLUMNS,NULLRESULTSNEWMEMORYRESULTSETMETADATA//ADDOURSELFASAROWLISTENER③STEPSTEPADDROWLISTENERTHISFOUNDSTEPTRUEBREAK}}1ROW对象是KETTLE用来表示一行数据的标准对象,跟JDBC取出来的一条数据转

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值