Kettle使用案例
# 一、转换案例
案例一:把stu1的数据按id同步到stu2,stu2有相同id则更新数据
(1)在mysql中创建两张表
mysql> create database kettle;
mysql> use kettle;
mysql> create table stu1(id int,name varchar(20),age int);
mysql> create table stu2(id int,name varchar(20));
2
3
4
(2)往两张表中插入一些数据
mysql> insert into stu1 values(1001,'zhangsan',20),(1002,'lisi',18), (1003,'wangwu',23);
mysql> insert into stu2 values(1001,'wukong');
2
(3)在kettle中新建转换

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

(5)双击表输入对象,填写相关配置,测试是否成功

(6)双击 更新/插入对象,填写相关配置

(7)保存转换,启动运行,去mysql表查看结果
注意
如果需要连接mysql数据库,需要先将mysql的连接驱动包复制到kettle的根目录下的lib目录中,否则会报错找不到驱动。

# 二、作业案例
案例二:使用作业执行上述转换,并且额外在表stu2中添加一条数据,整个作业运行成功的话发邮件提醒
(1)新建一个作业

(2) 按图示拉取组件

(3)双击Start编辑Start

(4)双击转换,选择案例1保存的文件

(5)双击SQL,编辑SQL语句

(6)双击发送邮件,编辑发送邮件的设置信息



(7)保存作业并执行,然后去mysql查看结果和邮件信息
# 三、Hive-HDFS案例
案例三:将hive表的数据输出到hdfs
(1)因为涉及到hive和hbase的读写,需要先修改相关配置文件。
修改kettle安装目录下的data-integration\plugins\pentaho-big-data-plugin下的plugin.properties,设置active.hadoop.configuration=hdp26,并将如下配置文件拷贝到data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp26下

(2)启动hdfs,yarn,zookeeper,hbase集群的所有进程,启动hiveserver2服务
[atguigu@hadoop102 ~]$ hadoop.sh start //自己写的hadoop启动脚本
[atguigu@hadoop102 ~]$ zk.sh start //自己写的zookeeper启动脚本
[atguigu@hadoop102 ~]$ /opt/module/hbase-1.3.1/bin/start-hbase.sh
[atguigu@hadoop102 ~]$ /opt/module/hive/bin/hiveserver2
2
3
4
(3)进入beeline,查看10000端口开启情况
[atguigu@hadoop102 ~]$ /opt/module/hive/bin/beeline
Beeline version 1.2.1 by Apache Hive
beeline> !connect jdbc:hive2://hadoop102:10000(回车)
Connecting to jdbc:hive2://hadoop102:10000
Enter username for jdbc:hive2://hadoop102:10000: atguigu(输入atguigu)
Enter password for jdbc:hive2://hadoop102:10000:(直接回车)
Connected to: Apache Hive (version 1.2.1)
Driver: Hive JDBC (version 1.2.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://hadoop102:10000>(到了这里说明成功开启10000端口)
2
3
4
5
6
7
8
9
10
(4)创建两张表dept和emp
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';
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(5)插入数据
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);
2
3
4
5
6
7
(6)按下图建立流程图

(7)设置表输入,连接hive


(8)设置排序属性

(9)设置连接属性

(10)设置字段选择

(11)设置文件输出,点击浏览按钮

选择存储路径为HDFS,并且新建一个Hadoop Cluster连接

按照集群配置输入对应的参数

选择创建好的大数据集群连接

然后再依次设置文本文件输出控件的文件,内容,字段三个设置页,注意一定要获取字段



(12)保存并运行转换,然后查看hdfs

# 四、HDFS-Hbase案例
案例四:读取hdfs文件并将sal大于1000的数据保存到hbase中
(1) 在HBase中创建一张表用于存放数据
[atguigu@hadoop102 ~]$ /opt/module/hbase-1.3.1/bin/hbase shell
hbase(main):004:0> create 'people','info'
2
(2)按下图建立流程图

(3)设置文件输入,连接hdfs


注意千万别忘记获取字段,然后给字段设置格式

(4)设置过滤记录

(5)设置HBase output控件
1.选择一个大数据集群连接
2.选择上面复制过来的hbase-site.xml
3.去第二个配置页面创建映射,然后保存映射(选择rowkey字段)
4.再回第一个配置页选择Hbase表以及刚刚创建好的映射


注意:若报错没有权限往hdfs写文件,在Spoon.bat中第119行添加参数
"-DHADOOP_USER_NAME=atguigu" "-Dfile.encoding=UTF-8" (6)保存转换并运行,然户去hbase里面查看数据
