七十八、Kettle的几个使用案例

上一篇文章我们介绍了一下Kettle以及Kettle的安装部署,本文我们来具体看几个例子,看看Kettle是怎样使用的。使用示例我们基于Windows安装的Kettle进行演示说明。关注专栏《破茧成蝶——大数据篇》,查看更多相关的内容~


目录

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

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

三、案例三:将Hive表的数据输出到HDFS。

四、案例四:读取HDFS文件并将sal大于1000的数据保存到HBase中。

五、Kettle调优


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

1、需求

把stu1的数据按id同步到stu2,stu2有相同id则更新数据。

2、在MySQL中创建两张表并插入一些数据

create table stu1(id int,name varchar(20),age int);
create table stu2(id int,name varchar(20));

insert into stu1 values(1001,'xzw',20),(1002,'fq',18), (1003,'yxy',23);
insert into stu2 values(1001,'lyq');

3、在kettle中新建转换

4、分别在输入和输出中拉出表输入和插入/更新

5、双击表输入对象,填写相关配置信息。

6、双击更新/插入对象,填写相关配置信息

7、保存转换,运行

8、在MySQL中查看运行结果,发现已经完成了数据的同步。

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

1、需求

使用作业执行上述转换,并且额外在表stu2中添加一条数据。

2、新建作业

3、拉取相关组件,如下图所示。

4、双击start编辑start

5、双击转换,选择案例一保存的文件。

6、双击SQL,编辑SQL语句。

7、保存执行,查看MySQL中的结果

三、案例三:将Hive表的数据输出到HDFS。

1、需求

将Hive表的数据输出到HDFS。

2、修改配置文件

(1)修改解压目录data-integration\plugins\pentaho-big-data-plugin下的plugin.properties。

active.hadoop.configuration=hdp26

(2)将下面的配置文件拷贝到data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp26目录下。

3、启动Hadoop集群以及相关组件,启动hiveserver2功能

[root@master hive]# bin/hiveserver2

进入beeline:

[root@master hive]# bin/beeline 
Beeline version 1.2.1 by Apache Hive
beeline> !connect jdbc:hive2://master:10000
Connecting to jdbc:hive2://master:10000
Enter username for jdbc:hive2://master:10000: root
Enter password for jdbc:hive2://master:10000: ********
Connected to: Apache Hive (version 1.2.1)
Driver: Hive JDBC (version 1.2.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://master:10000> show databases;
+----------------+--+
| database_name  |
+----------------+--+
| default        |
| xzw            |
+----------------+--+
2 rows selected (1.66 seconds)
0: jdbc:hive2://master:10000> 

4、创建两张表并导入数据

CREATE TABLE dept(deptno int, dname string,loc string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';

CREATE TABLE emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm int,
deptno int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';

insert into dept values(10,'accounting','NEW YORK'),(20,'RESEARCH','DALLAS'),(30,'SALES','CHICAGO'),(40,'OPERATIONS','BOSTON');

insert into emp values
(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20),
(7499,'ALLEN','SALESMAN',7698,'1980-12-17',1600,300,30),
(7521,'WARD','SALESMAN',7698,'1980-12-17',1250,500,30),
(7566,'JONES','MANAGER',7839,'1980-12-17',2975,NULL,20);

5、建立流程图

6、设置表输入,连接Hive。

7、设置排序属性

8、设置连接属性

9、设置字段选择

10、设置文件输出

(1)编辑HDFS连接

(2)配置内容、字段等等

11、保存并测试

四、案例四:读取HDFS文件并将sal大于1000的数据保存到HBase中。

1、需求

读取HDFS文件并将sal大于1000的数据保存到HBase中。

2、首先在HBase中创建一张用于存放数据的表

3、建立流程图

4、设置文件输入,连接HDFS

5、设置过滤记录

6、设置HBase输出

(1)设置映射

(2)连接参数

7、保存并测试

五、Kettle调优

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

1、-Xmx2048m:设置JVM最大可用内存为2048M。
2、-Xms1024m:设置JVM促使内存为1024m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
3、-Xmn2g:设置年轻代大小为2G。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
4、-Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。

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

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

4、尽量提高批处理的commit size。

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

6、Kettle是Java做的,尽量用大一点的内存参数启动Kettle。

7、可以使用sql来做的一些操作尽量用sql。

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

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

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

11、尽量缩小输入的数据集的大小(增量更新也是为了这个目的)。

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

 

以上就是本文的所有内容,比较简单。你们在此过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了哪些问题~

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

象在舞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值