下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关于PentahoETL工具Kettle转换实现原理的研究・ETL和Kettle简介ETL即数据抽取(Extract)、转换(Transform)、装载(Load)的过程。它是构建数据仓库的重要环节。数据仓库是面向主题的、集成的、稳定的且随时间不断变化的数据集合,用以支持经营管理中的决策制定过程。Kettle是”KettleE.T.T.L.Envirnonment”只取首字母的缩写,这意味着它被设计用来帮助你实现你的ETTL需要:抽取、转换、装入和加载数据;翻译成中文名称应该叫水壶,名字的起源正如该项目的主程序员MATT在一个论坛里说的哪样:希望把各种数据放到一个壶里然后以一种指定的格式流出。Kettle的四大块:Chef——工作(job)设计工具(GUI方式)Kitchen 工作(job)执行器(命令行方式)Spoon 转换(transform)设计工具(GUI方式)Pan 转换(trasform)执行器(命令行方式)Spoon是一个图形用户界面,它允许你运行转换或者任务,其中转换是用Pan工具来运行,任务是用Kitchen来运行。Pan是一个数据转换引擎它可以执行很多功能,例如:从不同的数据源读取、操作和写入数据。Kitchen是一个可以运行利用XML或数据资源库描述的任务。通常任务是在规定的时间间隔内用批处理的模式自动运行下面将具体介绍Pan,和Kitchen在ETL中的实现过程。•数据转换原理及具体实现过程大致步骤如下:转换的过程中(在windows环境下),首先会调用Pan.bat,这一步主要是做一些初始化,连接验证,环境设置,检查之类;然后在Pan的最后一步会调用launcher.jar包,这个包用于启动JDBC驱动,并向JDBC传入相关连接信息和参数,然后开始传数据,最后是完成数据传输,关闭相关协议,写入日志。首先来看Kitchen的实现,Kitchen在一个job中一般包含以下几个步骤:转换:指定更细的转换任务,通过Spoon生成。通过Field来输入参数;SQL:sql语句执行;FTP:下载ftp文件;邮件:发送邮件;检查表是否存在;检查文件是否存在;执行shell脚本:如dos命令。批处理:(注意:windows批处理不能有输出到控制台)。Job包:作为嵌套作业使用。SFTP:安全的Ftp协议传输;HTTP方式的上/下传。以下是一个简单的ETL过程:
建立与目标库的连接开贻之前进订初贻化•、辺括字符集验证2眼语法验氐参数验证,口眈痿接通信號迸,検查源梓中茨是否存在等START完成传输写入日志Transformation当然』在发送数据之前会性檢查目标表中呈否有对应的表存在如果表中有大數据字段,洌妒團片,会先调用或批处罐充磁⑹本辔上整酊,然后在在表中插入数餐J ■ 建立与目标库的连接开贻之前进订初贻化•、辺括字符集验证2眼语法验氐参数验证,口眈痿接通信號迸,検查源梓中茨是否存在等START完成传输写入日志Transformation当然』在发送数据之前会性檢查目标表中呈否有对应的表存在如果表中有大數据字段,洌妒團片,会先调用或批处罐充磁⑹本辔上整酊,然后在在表中插入数餐J ■ :翌」口眈驰动根摇倍入的咆養數定位3标库郴箜牧到的w网Statement类:■!■':JexcuteQueryT^法执行'>同时用getTarget0.芳注取穆弓诉库连接「然后爰送数据"转换一开始就会调用Pan下面一段代码是基于JDBC的数据库访问的经典总结,简单地说,JDBC可做三件事:与数据库建立连接、发送SQL语句并处理结果:Connectioncon=DriverManager.getConnection("jdbc:odbc:wombat","login","password");Statementstmt=con.createStatement();ResultSetrs=stmt.executeQuery("SELECTa,b,cFROMTable1");while(rs.next()){intx=rs.getInt("a");Strings=rs.getString("b");floatf=rs.getFloat("c");}JDBC是个"低级"接口,也就是说,它用于直接调用SQL命令。在这方面它的功能极佳,并比其它的数据库连接API易于使用,但它同时也被设计为一种基础接口,在它之上可以建立高级接口和工具。高级接口是"对用户友好的"接口,它使用的是一种更易理解和更为方便的API,这种API在幕后被转换为诸如JDBC这样的低级接口。在关系数据库的"对象/关系"映射中,表中的每行对应于类的一个实例,而每列的值对应于该实例的一个属性。•总结Kettle实现数据转换,主要是通过JDBC驱动,建立连接,加载数据,传输数据,在这个过程中可能会调用XML脚本或批处理,大文件的话会用到FTP或HTTP方式上传/下传数据。•关于JDBC导致内存溢出的问题通过网上查阅资料和自己的理解得出了JDBC导致内存溢出的问题的几个原因OracleJDBC驱动,在大数据量查询时会使用大量的内存如果控制不好很容易导致Java出现Outofmemory错误耗内存有多方面的原因:OracleJDBC在从后台取数据时,为每行所设置的buffer是以列的最大size来计算分配内存的.当没有定义size,就取最大值,这导致某些字段,例如AGE之类,在加载到buffer中的时候本来只需要很小的内存开销,这里就花了更多的内存去读该行数据。但是,针对于可以指定大小的字段,ORACLE还是会根据具体SIZE分配内存。由些可见,作为一个数据库表的设计者,在定义表的列类型时,不能随便:应该遵循最小使用原则,否则会数据库的使用者带来不少的麻烦.比如能用varchar2的就不要用clob,用varchar2时不要随便定义一个很大的size,比如usernamevarchar(1024),username是不可能定义为这么长的.新的JDBC标准,增加了statementclientpool功能.对于一个处理业务的JDBC程序,这个功能肯定是一个很好的,以内存换速度的方法.不过毕竟不是所有的JDBC使用程序都是这样的JVM最大内存设置。另JVM启动时最大内存也不能太小了•有一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 妊娠期生殖器疱疹的健康宣教
- 脓疱型银屑病的临床护理
- JJF(陕) 013-2019 微量总有机碳分析仪校准规范
- 《解读自由基》课件
- 北师大版不等式课件
- 大班级风采展示活动策划计划
- 掺混肥相关行业投资规划报告
- 充换电站相关行业投资方案范本
- 割灌机相关行业投资方案
- 课程研究小组的组织与管理计划
- 往来冲账合同范例
- 工装垫资合同范例
- 人教版九年级化学上册期末复习计算题巩固(含答案)
- 2022年四川省眉山市公开招聘警务辅助人员(辅警)笔试专项训练题试卷(3)含答案
- 重庆第二师范学院《管理学导论》2021-2022学年第一学期期末试卷
- 土木工程CAD-终结性考核-国开(SC)-参考资料
- 2024年医院法律法规培训:提升医务人员法律意识
- 种植槟榔合作合同模板
- 医药销售培训课程
- 中小学生冬季安全教育课件考核试卷
- 四川省内江市2024-2025学年高一上学期期中考试数学试题(含答案)
评论
0/150
提交评论