KETTLE使用自己总结的Kettle使用方法和成果说明
简介
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿无需安装,数据抽取高效稳定。
Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出.
Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做.
Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
Kettle可以在kettle。pentaho。org/网站下载到。
注:ETL,是英文 Extract—Transform—Load 的缩写,用来描述将数据从来源端经过萃取(extra
ct)、转置(transform)、加载(load)至目的端的过程.ETL一词较常用在数据仓库,但其对象并不限于数据仓库。
下载和安装
首先,需要下载开源免费的pdi-ce软件压缩包,当前最新版本为5.20。0。
下载网址:sourceforge/projects/pentaho/files/Data%20Integration/
然后,解压下载的软件压缩包:pdi—ce—5。2.0.0—209.zip,解压后会在当前目录下上传一个目录,名为data—integration。
由于Kettle是使用Java开发的,所以系统环境需要安装并且配置好JDK。
Kettle可以在http:///网站下载
下载kettle压缩包,因kettle为绿软件,解压缩到任意本地路径即可。
运行Kettle
进入到Kettle目录,如果Kettle部署在windows环境下,双击运行spoon.bat或文件.Linux用户需要运行spoon。s件,进入到Shell提示行窗口,进入到解压目录中执行下面的命令:
# chmod +x spoon。sh
# nohup ./spoon。sh & 后台运行脚本
这样就可以打开配置Kettle脚本的UI界面。
Kettle的简单使用
首先,点击“文件-新建—转换"菜单创建一个转换。
我们可以看到转换的主对象数和核心对象区域,然后我们添加一个DB连接。
选择“注对象数”,双击“转换2”标签下的“DB连接”会弹出一个设置窗口。填入连接名称,选择连接类型,配置数据库设置,然后测试下配置是否正确.
由于Kettle没有将所有的数据库的Driver文件集成,所以如果想连接指定的数据库,需要自己下载JDBC驱动,放入到解压目录下的lib目录中。添加完JDBC驱动后,必须重启下Kettle才能加载驱动.
1)Oracle的JDBC驱动:ojdbc6.jar
2)MySQL的JDBC驱动:mysql—connector—java—5.1.32。jar
注:在转换之前需要创建转换所需的表,原始表和转换的目标表。
点击“核心对象”标签页中的“输入",选择“表输入"拖到“转换"区域.
双击“表输入"图标弹出表输入对话框,填入步骤名称,选择数据库连接,点击“获取SQL查询语句”,或者直接写入SQL语句,填写附件信息,点击“预览”按钮查看执行结果,没有错误,点击“确认”关闭对话框。
点击“核心对象”—“输出”,选择“Excel输出”拖入到转换区,双击Excel输出图标,弹出对话框,选择文件名和其它附加参数,点击确认。
点击输入表的图标,同时按下shift键,再点击输出文件,将两者连接起来。然后双击Excel输出进行配置。
最后一步就是执行kettle脚本,点击工具栏上的绿箭头即可。
点击“启动”开始转换,在转换过程中会出现转换的信息,如下图所示.
完成转换后,我们可以Excel输出目录中查看转换结果.
注:时间字段换到Excel为空,修改SELECT语句中使用TO_CHAR转换成字符串,例如:TO_CHAR(START_TIME, ’yyyy-mm—dd HH24:MM:SS') AS START_TIME。
注:Excel中的记录不能超过65535条,否则会自动关闭文件,导致转换失败.
上面是一个简单的数据迁徙脚本,从数据库导出数据到EXCEL文件中。
Kettle处理HBase
本教程使用的软件版本信息如下:
1)Hadoop(1。2。1)
2)Pantaho Data Integration(5.2.0)
mysql下载完如何使用3)HBase(0.94。19)。
Pentaho Shim(社区版)目前支持的Hadoop版本:
参考:
wiki.pentaho/display/BAD/Configuring+Pentaho+for+your+Hadoop+Distro+and+Version
注:从上表中看出它不支持hadoop 1.2。x版本。
解决办法是使用HDP13的插件(基于hadoop—1。0.3/hbase—0.94.6)替代,步骤如下:
1)从https://pentaho.box/50—hdp12下载hdp13的shim插件。
2)解压到plugins/pentaho-big—data-plugin/hadoop—configurations目录下,目录名为hdp13。
3)进入plugins/pentaho—big-data—plugin目录,修改plugin。properties文件中的active。figuration属性为,缺省值为hadoop—20,如下:
active。hadoop。configuration=hdp13
3)替换掉hdp13/lib目录下与Hbase和hadoop有关的Jar包,拷贝一份l到hdp13目录下。
| hdp13/lib/pmr目录下替换后的Jar包:
| hdp13/lib/client目录下替换后的Jar包:
* 在HBase中创建一个weblogs表,步骤如下:
1)打开HBase shell,在命令行中输入:
hbase shell
2)在Hbase中创建一个表,在hbase shell中输入:
create ’weblogs’, ’pageviews'
* 上面命令会创建一个带有一个列族pageviews的weblogs的表.
3)执行quit退出HBase shell.
参考文档:
help。pentaho。com/Documentation/5。2/0L0/0Y0/0F0/040/000/000/030
1。 从下面网址下载。zip压缩文件作为文本文件数据源导入:
http://wiki。pentaho。com/download/attachments/23530622/weblogs_hbase。txt.zip
2。 从Spoon(Kettle)中,创建一个新的转换,选择“文件—新建-转换"。
点击“核心对象—输入”标签,然后把“文本文件输入"拖到画板中。
3。 双击文本文件输入,弹出文本文件输入对话框,点击“浏览…"按钮选择weblog_hbase。txt文件,点击“添加”按钮.
选择“内容”标签,清空分隔符点击“Insert TAB”按钮,选中“头部行数量"选择框,从格式的下拉菜单中选择Unix格式。
配置输入字段,从“字段”标签页中选择“获取字段”按钮,弹出可用的字段列表,询问采样的数量,输入100点击“OK"按钮.修改字段key的类型为String,长度为20。
点击“OK”按钮关闭对话框。
●在“核心对象—Big Data”下,把HBase Output图标拖入到面板中。并且把文本文件输入与HBase Outpu连接起来(按住shift+拖曳)。
●双击Hbase Output,在弹出对话框中输入Zookeeper的主机名和端口号。
1)Zookeeper host(s)字段中输入Zookeeper主机名,多个主机名使用逗号分隔。对于本地集使用localhost。
2)在Zookeeper port字段中,输入你的Zookeeper端口号,缺省值2181。
●创建一个Hbase映射,在Create/Edit mappings标签页中告诉Pentaho在HBase中如何存
储数据。
1)点击Get table names按钮,在HBase table name的选择框中选择weblogs
2)Mapping name,输入pageviews
3)点击“Get imcoming fields”按钮
4)从Alias的key这行修改Key为Y,清除掉Column family和Column name字段,并且设置Type字段为String,点击Save mapping。
●配置HBase out使用上面刚刚创建的映射。
1)进入到Configuration Connection标签页,点击Get table names。
2)点击Get table names,在Hbase table name的选择框中选择weblogs.
3)点击Get mappings for speficed table获取指定的表。
4)点击Mapping name,选择pageviews,点击“确认”按钮关闭窗口。
点击“文件—另存为”菜单保存转换,在选择目录中输入load_hbase.ktr作为文件名。
●点击转换工具栏中的运行按钮运行转换,或者选择“动作-运行”菜单打开一个执行转换的窗口,点击“启动"按钮。
在Spoon接口的下面打开一个执行结果窗口,显示运行时转换的进度。在几十秒之后完成转换。
如果在转换过程中出现任何错误,将会红高亮显示,在日志标签页查看错误信息.
●通过查询HBase验证数据
1)从命令行中,输入下面命令打开HBase shell:hbase shell
2)通过这个命令查询HBase:scan ’weblogs', {LIMIT =〉 10}
应该返回数据的行数。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论