七十八Kettle的几个使用案例
Posted 象在舞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了七十八Kettle的几个使用案例相关的知识,希望对你有一定的参考价值。
上一篇文章我们介绍了一下Kettle以及Kettle的安装部署,本文我们来具体看几个例子,看看Kettle是怎样使用的。使用示例我们基于Windows安装的Kettle进行演示说明。关注专栏《破茧成蝶——大数据篇》,查看更多相关的内容~
目录
一、案例一:把stu1的数据按id同步到stu2,stu2有相同id则更新数据。
二、案例二:使用作业执行上述转换,并且额外在表stu2中添加一条数据。
四、案例四:读取HDFS文件并将sal大于1000的数据保存到HBase中。
一、案例一:把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步骤)。
以上就是本文的所有内容,比较简单。你们在此过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了哪些问题~
以上是关于七十八Kettle的几个使用案例的主要内容,如果未能解决你的问题,请参考以下文章