ETL工具之Kettle

目录

 

一、什么是Kettle?

二、Kettle核心知识点

三、案例操作

四、资源库

五、Linux下使用

六、调优


一、什么是Kettle?

ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程,数据清洗),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可少。

kettle是纯java编写,支持图形化的GUI设计界面,然后可以以工作流的形式流转,在做一些简单或复杂的数据抽取、质量检测、数据清洗、数据转换、数据过滤等方面有着比较稳定的表现,其中最主要的我们通过熟练的应用它,减少了非常多的研发工作量,提高了我们的工作效率。

Kettle概念

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。

Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。

Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。

Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

二、Kettle核心知识点

1、Kettle工程存储方式

1) 以XML形式存储

2) 以资源库方式存储(数据库资源库和文件资源库)

2、Kettle的两种设计

3、kettle组成

4、安装

1) 安装jdk

2) 下载kettle压缩包,因kettle为绿色软件,解压缩到任意本地路径即可

3) 双击Spoon.bat,启动图形化界面工具,就可以直接使用了

三、案例操作

案例一   需求:把stu1的数据按id同步到stu2,stu2有相同id则更新数据

注意:如果需要连接mysql数据库,需将mysql的连接驱动包复制到kettle的根目录下的lib目录中,否则会报错找不到驱动。

案例二   需求:使用作业执行上述转换,并且额外在表student2中添加一条数据

案例三:需求:将hive表的数据输出到hdfs

案例四:需求:读取hdfs文件并将sal大于1000的数据保存到hbase中

四、资源库

1、数据库资源库是将作业和转换相关的信息存储在数据库中,执行的时候直接去数据库读取信息,很容易跨平台使用

2、将作业和转换相关的信息存储在指定的目录中,其实和XML的方式一样创建方式跟创建数据库资源库步骤类似,只是不需要用户密码就可以访问,跨平台使用比较麻烦

五、Linux下使用

1、单机模式

(1)jdk安装、安装包上传到服务器,解压

(2)配置文件    C盘的.kettle文件夹放在linux用户的根目录下

注意:1. mysql驱动拷贝到lib目录下

(1)运行数据库资源库中的转换:

[hdp-2@hdp-2 data-integration]$./pan.sh -rep=my_resp -user=admin -pass=admin -trans=stu1tostu2 -dir=/

-rep         资源库名称                                -user -pass        资源库帐号密码(默认都是admin)

-trans       要启动的转换名称                    -dir         存放在资源库的目录(不要忘了前缀 /)

(2)运行资源库里的作业:

[root@hdp-2 data-integration]$./kitchen.sh -rep=my_rep -user=admin -pass=admin -job=insert -logfile=./logs/log.txt -dir=/

参数说明:

-job – job名            -logfile – 日志目录

2、集群模式

(1)上传解压kettle的安装包以及资源库

(2)进到/opt/module/data-integration/pwd目录,修改配置文件

#修改主服务器配置文件carte-config-master-8080.xml
<slaveserver>
    <name>master</name>
    <hostname>hadoop102</hostname>
    <port>8080</port>
    <master>Y</master>
    <username>cluster</username>
    <password>cluster</password>
  </slaveserver>

#修改从服务器配置文件carte-config-8081.xml  8082类似8081
  <masters>
    <slaveserver>
      <name>master</name>
      <hostname>hadoop102</hostname>
      <port>8080</port>
      <username>cluster</username>
      <password>cluster</password>
      <master>Y</master>
    </slaveserver>
  </masters>
  <report_to_masters>Y</report_to_masters>
  <slaveserver>
    <name>slave1</name>
    <hostname>hadoop103</hostname>
    <port>8081</port>
    <username>cluster</username>
    <password>cluster</password>
    <master>N</master>
  </slaveserver>

(3)启动相关进程,在hdp-1、hdp-2、hdp-3上执行

[root@hdp-2 data-integration]$./carte.sh hdp-2 8080

[root@hdp-1 data-integration]$./carte.sh hdp-1 8081

[root@hdp-3 data-integration]$./carte.sh hdp-3 8082

访问web页面  http://hdp-2:8080成功就说明启动成功,网页没有实质性作用

若涉及到hivehbase的读写,需要修改相关配置文件。

修改解压目录下的data-integration\plugins\pentaho-big-data-plugin下的plugin.properties,设置active.hadoop.configuration=hdp26,并将如下配置文件拷贝到data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp26

还是在Windowst Spoon上操作,创建子服务器,集群模式,最后集群模式运行

六、调优

1、调整JVM大小进行性能优化,修改Kettle根目录下的Spoon脚本。

 

2、 调整提交(Commit)记录数大小进行优化,Kettle默认Commit数量为:1000,可以根据数据量大小来设置Commitsize:1000~50000

3、尽量使用数据库连接池;

4、尽量使用缓存,缓存尽量大一些(主要是文本文件和数据流);

5、可以使用sql来做的一些操作尽量用sql;Group , merge , stream lookup,split field这些操作都是比较慢的,想办法避免他们.,能用sql就用sql;

6、插入大量数据的时候尽量把索引删掉;

7、尽量避免使用update , delete操作,尤其是update,如果可以把update变成先delete,  后insert;

8、能使用truncate table的时候,就不要使用deleteall row这种类似sql合理的分区,如果删除操作是基于某一个分区的,就不要使用delete row这种方式(不管是deletesql还是delete步骤),直接把分区drop掉,再重新创建;

9、尽量使用数据库原生的方式装载文本文件(Oracle的sqlloader, mysql的bulk loader步骤)。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值