Pentaho ETL工具Kettle转换实现原理

上传人:公**** 文档编号:430972384 上传时间:2023-12-04 格式:DOCX 页数:5 大小:60.47KB
返回 下载 相关 举报
Pentaho ETL工具Kettle转换实现原理_第1页
第1页 / 共5页
Pentaho ETL工具Kettle转换实现原理_第2页
第2页 / 共5页
Pentaho ETL工具Kettle转换实现原理_第3页
第3页 / 共5页
Pentaho ETL工具Kettle转换实现原理_第4页
第4页 / 共5页
Pentaho ETL工具Kettle转换实现原理_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《Pentaho ETL工具Kettle转换实现原理》由会员分享,可在线阅读,更多相关《Pentaho ETL工具Kettle转换实现原理(5页珍藏版)》请在金锄头文库上搜索。

1、关于Pentaho ETL工具Kettle转换实现原理的研究 ETL 和 Kettle 简介ETL即数据抽取(Extract)、转换(Transform)、装载(Load)的过程。它是构建数据 仓库的重要环节。数据仓库是面向主题的、集成的、稳定的且随时间不断变化的数据集合,用以 支持经营管理中的决策制定过程。Kettle是” Kettle E.T.T.L. Envirnonment”只取首字母的缩写,这意味着它被设计 用来帮助你实现你的ETTL需要:抽取、转换、装入和加载数据;翻译成中文名称应该叫水 壶,名字的起源正如该项目的主程序员MATT在一个论坛里说的哪样:希望把各种数据放到 一个壶里然

2、后以一种指定的格式流出。Kettle的四大块:Chef工作(job)设计工具(GUI方式)Kitchen工作(job)执行器(命令行方式)Spoon转换(transform)设计工具(GUI方式)Pan转换(trasform)执行器(命令行方式)Spoon是一个图形用户界面,它允许你运行转换或者任务,其中转换是用Pan工具来运 行,任务是用Kitchen来运行。Pan是一个数据转换引擎 它可以执行很多功能,例如:从 不同的数据源读取、操作和写入数据。Kitchen是一个可以运行利用XML或数据资源库描述 的任务。通常任务是在规定的时间间隔内用批处理的模式自动运行下面将具体介绍Pan, 和Kit

3、chen在ET L中的实现过程。数据转换原理及具体实现过程大致步骤如下:转换的过程中(在windows环境下),首先会调用Pan.bat,这一步主要是做一些初始化,连接验证,环境设置,检查之类;然后在Pan的最后一步会调用胞皿川匚2匕包,这个 包用于启动JDBC驱动,并向JDBC传入相关连接信息和参数,然后开始传数据,最后是完 成数据传输,关闭相关协议,写入日志。首先来看Kitchen的实现,Kitchen在一个job中一般包含以下几个步骤:转换:指定更细的转换任务,通过Spoon生成。通过Field来输入参数;SQL: sql语句执行;FTP:下载ftp文件;邮件:发送邮件;检查表是否存在;

4、检查文件是否存在;执行shell脚本:如dos命令。批处理:(注意:windows批处理不能有输出到控制台)。Job包:作为嵌套作业使用。SFTP:安全的Ftp协议传输;HTTP方式的上/下传。以下是一个简单的ETL过程:.ransformation会调用Pan建立与目标库的连接即凯驱动根据传又的坂I参数定位开始之前进钉初蛉佗包括字符集验证芒戡,语法验近参数验证,E咒连接通值 验正桧查源年中表是否存在筹目标俾,.然后将接收到的国L语句用当懋,在发送数蜗:前会先检苣只标表中是否有对应的表存在如果表中有大数据字段,例如图打,登先调用FI?切没或批批转换一开始就理/3HELL脚本等上隹图片J然后狂在

5、表中曲入数据下面一段代码是基于JDBC的数据库访问的经典总结,简单地说,JDBC可做三件事:与数 据库建立连接、发送SQL语句并处理结果:Connection con = DriverManager.getConnection(jdbc: odbc: wombat, login”, password);Statement stmt = con.createStatement();ResultSet rs = stmt.executeQuery(SELECTa, b, c FROM Tablet);while (rs.next() int x = rs.getInt(a);String s =

6、rs.getString(b);float f = rs.getFloat (c);JDBC是个低级接口,也就是说,它用于直接调用SQL命令。在这方面它的功能极佳,并比其它的数据库连接API易于使用,但它同时也被设计为一种基础接口,在它之上可以建立高级接口和工具。高级接口是对用户友好的接口,它使用的是一种更易理解和更 为方便的API,这种API在幕后被转换为诸如JDBC这样的低级接口。在关系数据库的对象/关系映射中,表中的每行对应于类的一个实例,而每列的 值对应于该实例的一个属性。总结Kettle实现数据转换,主要是通过JDBC驱动,建立连接,加载数据,传输数据,在这个过 程中可能会调用XML

7、脚本或批处理,大文件的话会用到FTP或HTTP方式上传/下传数据。关于JDBC导致内存溢出的问题通过网上查阅资料和自己的理解得出了 JDBC导致内存溢出的问题的几个原因Oracle JDBC驱动,在大数据量查询时会使用大量的内存如果控制不好 彳艮容易导致Java出现Out of memory错误耗内存有多方面的原因:1. Oracle JDBC在从后台取数据时,为每行所设置的buffer是以列的最大size来计算分 配内存的.当没有定义size,就取最大值,这导致某些字段,例如AGE之类,在加载到buffer 中的时候本来只需要很小的内存开销,这里就花了更多的内存去读该行数据。但是,针对于 可

8、以指定大小的字段,ORACLE还是会根据具体SIZE分配内存。由些可见,作为一个数据库 表的设计者,在定义表的列类型时,不能随便:应该遵循最小使用原则,否则会数据库的 使用者带来不少的麻烦.比如能用varchar2的就不要用clob,用varchar2时不要随便定义一个很大的size,比如 username varchar(1024), username是不可能定义为这么长的.2. 新的JDBC标准,增加了 statement client pool功能.对于一个处理业务的JDBC程序, 这个功能肯定是一个很好的,以内存换速度的方法.不过毕竟不是所有的JDBC使用程序都 是这样的3. JVM最大内存设置。另JVM启动时最大内存也不能太小了.有一个到现在可能还误导的问 题:就是jvm最大内存设置不能超过4G,很显然这个是32bit的jvm和OS的问题,如果你 是64bit OS加上64bit的JVM当然没有这个限制了.当然内存溢出不是一个简单的问题,还有其他很多方面导致,比如,查询的效率,类型转换 这些都可能导致内存开销过大。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号