从说话到走路手把手教学KETTLE

it2024-10-13  35

大家好,欢迎来到本篇博客,博主是一名刚入大数据行业的小白,利用空闲的时间来分享自己所学的知识,帮助和博主一样刚处于起步阶段的同学,水平不高,若有什么错误和纰漏之处恳请大佬不吝赐教,目前个人博客只有:https://zhenyu.blog.csdn.net/,感谢大家的支持,谢谢 送给大家一句话:今日事,今日毕

本篇博客主要讲解:了解Kettle,掌握Kettle

目标:

学会使用Kettle

KETTLE

数据源大数据岗位需求Kettle介绍Kettle安装&配置Kettle入门案例需求实现步骤具体实现 Kettle数据流结构图Kettle输入 / 输出组件输入组件JSON数据文件输入表输入生成记录 输出组件文本文件输出表输出插入更新删除 Kettle整合大数据平台Kettle整合HadoopHadoop环境准备kettle与hahoop环境整合Hadoop File input组件Hadoop File Output组件 Kettle整合Hive初始化数据Kettle与Hive整合从Hive中读取数据把数据保存到hive数据库执行Hive的HiveSQL语句 Kettle常用其它组件Kettle转换组件值映射增加序列字段选择 Kettle流程控件switch case过滤记录 Kettle连接控件笛卡尔积记录集连接 Kettle作业和参数Job(作业)Job Item(作业项) Job Hop(作业跳)作业示例 参数 小结

数据源

下载数据源:点击下载数据源_提取码:1314

大数据岗位需求

---------------------------------------先一起看一下大数据岗位的基本要求 ---------------------------------------可以看到,学习KETTLE是我们的重中之重

Kettle介绍

-------------对于企业或行业应用来说,经常会遇到各种数据的处理,转换,迁移,掌握一种etl工具的使用,必不可少,这里要学习的ETL工具是——Kettle,现在已经更名为PDI。

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装

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

Kettle允许管理来自不同数据库的数据,提供一个图形化的用户环境来描述想做什么,无需关心怎么做

Kettle安装&配置

环境要求:

安装、配置好JDK -------------点击下载Kettle_提取码:1314

解压Kettle

解压后

双击spoon.bat

启动spoon 启动后结果

Kettle入门案例

需求

把数据从CSV文件(ketttle测试数据\用户数据源\user.csv)抽取到Excel文件

数据源:

idnameagegenderprovincecityregionphonebirthdayhobby注册时间392456197008193000张三200北京市昌平区回龙观185894076921970-08-19美食;篮球;足球2018-08-06 09:44:43267456198006210000李四251河南省郑州市郑东新区186811096721980-06-21音乐;阅读;旅游2017-04-07 09:14:13892456199007203000王五241湖北省武汉市汉阳区187980091021990-07-20写代码;读代码;算法2016-06-08 07:34:23492456198712198000赵六262陕西省西安市莲湖区181891891951987-12-19购物;旅游2016-01-09 19:15:53392456197008193000张三200北京市昌平区回龙观185894076921970-08-19美食;篮球;足球2018-08-06 09:44:43392456197008193000张三200北京市昌平区回龙观185894076921970-08-19美食;篮球;足球2018-08-06 09:44:43

实现步骤

在Kettle中新建转换

拖拽一个CSV输入组件、一个Excel输出组件、并按住Shift拖动鼠标连接两个组件

配置CSV输入组件、Excel输出组件

具体实现

新建转换 拖拽一个CSV输入组件、一个Excel输出组件、并按住Shift拖动鼠标连接两个组件

3、配置CSV输入组件

右键选择CSV文件输入选择要进行导入的CSV数据源点击 「获取字段」,读取CSV中的列点击 「预览」,浏览CSV中的数据

配置Excel组件

5. 点击 三角形 箭头执行 6. 结果

Kettle数据流结构图

Kettle输入 / 输出组件

输入组件

JSON数据文件输入

需求:

将 资料\kettle测试数据\用户数据源\user.json 数据文件,通过Kettle,抽取到Excel中 操作步骤:

新建转换

拽入 JSON input组件、Microsoft Excel输出组件、并连接两个组件

3. 配置 JSON input 组件

①指定Json文件数据源 ②选择Json字段

③预览数据

④配置 Excel 输出 组件

⑤启动执行

⑥结果

表输入

需求:

将MySQL数据库中的 user 表中的数据抽取到Excel文件中

环境准备:

一、Kettle整合MySQL数据库

将资料中的 MySQL jdbc 驱动包导入到 pdi-ce-8.2.0.0-342\data-integration\lib中

重启 Kettle

二、MySQL建库 1、导入 资料\kettle测试数据\mysql-user表\test_t_user.sql 到 MySQL数据库中

win+R cmd

输入mysql -u用户名 -p密码

#加载文件 source test_t_user.sql:文件路径

三、实现步骤

拉动 输入/表输入 、输出/Excel输出 组件、连接两个组件

配置表输入

配置Excel输出组件

四、具体操作:

拉动 输入/表输入 、输出/Excel输出 组件、连接两个组件

配置表输入

新建数据库连接

选择 t_user 表,并获取SQL查询语句

预览数据

注意:创建一个共享的数据库连接操作步骤

配置Excel输出组件 指定Excel输出位置

启动执行

结果

生成记录

-------------数据仓库中绝大多数的数据都是业务系统生成的动态数据,但是其中一部分维度数据不是动态的,比如:日期维度。静态维度数据就可以提前生成。 需求: ---------往 Excel 文件中插入1000条记录:id为1,name为zhangsan,age为18 操作步骤:

拖入 输入/生成记录 组件、输出/Excel输出 组件、连接两个组件配置生成记录组件配置Excel输出

具体实现:

拖入 输入/生成记录 组件、输出/Excel输出 组件、连接两个组件 配置生成记录组件 预览 结果

输出组件

上面很详细的给大家讲解每一步的操作,下面我就简化一下操作了

文本文件输出

需求:

从mysql数据库的test库的t_user表 抽取数据到文本文件中

步骤:

拖入 一个 输入/表输入、一个 输出/文本文件输出、并连接两个组件

指定 从哪个表中获取数据

指定表中的数据输出到哪个文件

表输出

表输出就是把数据写入指定的表

需求:

从 资料\kettle测试数据\用户数据源\user.json中读取id, name, age字段的数据装载到mysql数据库的 t_user_1 表中

操作步骤:

拖动 输入/JSON Input组件 ,输出/表输出,连接两个组件

JSON输入配置

表输出配置

具体操作:

拖动 输入/JSON Input组件 ,输出/表输出,连接两个组件

JSON输入配置

表输出配置

结果

插入更新

插入更新就是把数据库已经存在的记录与数据流里面的记录进行比对 如果不同就进行更新如果记录不存在,则会插入数据

需求:

从资料\kettle测试数据\user_new.json 中读数据,并插入或更新到mysql数据库的 t_user_1 表中

操作步骤:

拖入一个 输入/JSON输入组件,一个 输出/插入更新组件、连接两个组件

配置 JSON输入组件

配置 插入更新 组件

启动执行

具体实现:

拖入一个 输入/JSON输入组件,一个 输出/插入更新组件、连接两个组件 配置 JSON输入组件 配置 插入更新 组件 启动执行&结果

删除

需求:

-------从mysql数据库 t_user_1 表中删除指定id为 392456197008193000的数据

操作步骤:

拖入一个 输入/自定义常量数据、输出/删除 组件

连接两个组件

配置自定义常量数据组件

配置删除组件

结果

Kettle整合大数据平台

Kettle整合Hadoop

Hadoop环境准备

查看hadoop的文件系统:浏览器访问:http://node1:50070/

查看hadoop的文件系统:通过终端访问:hadoop fs -ls / # 查看文件

在Hadoop文件系统中创建/hadoop/test目录 hadoop fs -mkdir -p /hadoop/test

在本地创建1.txt

vim 1.txt --------- id,name 1,zhangsan 2,lisi --------将文件上传--------- 上传1.txt到hadoop文件系统的/hadoop/test目录 hadoop fs -put 1.txt /hadoop/test

kettle与hahoop环境整合

确保Hadoop的环境变量设置好HADOOP_USER_NAME为root从Hadoop下载核心配置文件 ------------- 掌握:lrzsz sz /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/hdfs-site.xml sz /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/core-site.xml sz命令设置下载到Windows的目录: 把Hadoop核心配置文件(hdfs-site.xml和core-site.xml)放入Kettle目录 data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\cdh514修改 data-integration\plugins\pentaho-big-data-plugin\plugin.properties文件 active.hadoop.configuration=cdh514

5. 创建Hadoop Clusters 具体步骤如下: -------------点击测试结果如图片右侧展示效果说明整合hadoop环境没有问题!!点击确定保存以上操作即可!! -------------查看链接是否保存: -------------如果与hadoop链接没有保存后续是无法操作hadoop集群!!

Hadoop File input组件

-------------Kettle在Big data分类中提供了一个Hadoop file input 组件用来从hdfs文件系统中读取数据。 需求:

从Hadoop文件系统读取/hadoop/test/1.txt文件,把数据输入到Excel中。

实现步骤:

拖入以下组件 配置Hadoop File Input组件 指定hdfs的目标路径:指定文件内容格式:点击字段查看获取字段是否正确:配置excel输出组件:点击excel输出组件获取字段查看字段是否正确:启动转换任务:结果

Hadoop File Output组件

-------------Kettle在Big data分类中提供了一个Hadoop file output 组件用来向hdfs文件系统中保存数据

需求:

读取 user.json 把数据写入到hdfs文件系统的的/hadoop/test/2.txt中。

实现步骤:

拖入以下组件

配置 JSON 输入组件

指定json文件的路径 配置json input组件读取的字段

配置Hadoop file output组件

指定hdfs目标路径指定源文件的属性信息:结果:

Kettle整合Hive

初始化数据

启动Hive: hive --service hiveserver2 & hive --service metastore &

连接hive

创建并切换数据库

create database test; use test; 创建表 create table a( a int, b int ) row format delimited fields terminated by ',' stored as TEXTFILE; show tables; 创建文件 vim a.txt 1,11 2,22 3,33 从文件加载数据到表 load data local inpath '/root/a.txt' into table a; 查询表 select * from a;

Kettle与Hive整合

从虚拟机下载Hadoop的jar包 sz /export/servers/hadoop-2.6.0-cdh5.14.0/share/hadoop/common/hadoop-common-2.6.0-cdh5.14.0.jar把jar包放置在\data-integration\lib目录下 重启kettle,重新加载生效 关掉之前打开的kettle重新启动!!

从Hive中读取数据

hive数据库是通过jdbc来进行连接,可以通过表输入控件来获取数据。 需求:

从hive数据库的test库的a表中获取数据,并把数据保存到Excel中。 实现步骤:

设计一下kettle组件结构

选择输入文件夹内的表输入组件:

配置表输入组件

新建hivejdbc连接:

配置excel输出组件

把数据保存到hive数据库

hive数据库是通过jdbc来进行连接,可以通过表输出控件来保存数据。 需求:

从Excel资料\02.kettle测试数据\01.用户数据源\file_user.xls中读取数据,把数据保存在hive数据库的test数据库的t_user表。 实现步骤:

设计如下kettle组件结构

配置 Excel输入组件

配置表输出组件

执行Hive的HiveSQL语句

Kettle中可以执行Hive的HiveSQL语句,使用作业的SQL脚本。 需求:

聚合查询weblogs表(以IP和年月分组统计的PV数据),同时建立一个新表保存查询数据。

准备hive表

在hive的test数据库下创建weblogs表:

CREATE TABLE `weblogs`( `client_ip` string, `full_request_date` string, `day` string, `month` string, `month_num` int, `year` string, `hour` string, `minute` string, `second` string, `timezone` string, `http_verb` string, `uri` string, `http_status_code` string, `bytes_returned` string, `referrer` string, `user_agent` string) row format delimited fields terminated by '\t' stored as textfile;

导入资料\02.kettle测试数据\hive-weblogs\下的数据

load data local inpath '/root/weblogs_parse.txt' into table weblogs;

验证数据

select * from test.weblogs limit 5;

实现步骤:

设计如下作业组件结构 配置SQL组件 测试数据是否生成

Kettle常用其它组件

Kettle转换组件

转换是ETL的T,T就是Transform清洗、转换

ETL三个部分中,T花费时间最长,是“一般情况下这部分工作量是整个ETL的2/3

值映射

值映射就是把字段的一个值映射成其他的值在数据质量规范上使用非常多,比如很多系统对应性别gender字段的定义不同 系统1:1 男、2女系统2:f 男、m 女数据仓库统一为:male 男、female女

需求:

从user.json 中读取数据,并把gender列 0 -> 男1 -> 女2 -> 保密 写入到Excel文件

实现步骤:

拖入一个 JSON输入组件、一个值映射转换组件、一个Excel输出组件,连接三个组件配置JSON输入组件置值映射转换组件配置Excel输出组件

具体实现:

拖入一个 JSON输入组件、一个值映射转换组件、一个Excel输出组件,连接三个组件 组件配置图 配置JSON输入组件配置值映射转换组件 值映射组件 配置Excel输出组件 结果数据

增加序列

增加序列就是给数据流增加一个序列字段

需求:

从 user.json 读取数据,并添加序列,把数据保存到Excel

实现步骤:

拖入JSON输入组件、增加序列组件、Excel输出组件,并连接三个组件 组件配置图 配置JSON Input组件 配置JSON组件 配置增加序列组件 配置增加序列组件 配置Excel输出组件 Excel组件配置 结果 结果

字段选择

字段选择是从数据流中选择字段、改变名称、修改数据类型

需求:

从 user.json 中读取数据移除birthday和register_date把phone列名改为telephone,id列名改为key,gender列名改为sex输出到Excel文件中

实现步骤:

拖入 JSON输入 组件、字段选择组件、Excel输出组件 组件配置图 配置JSON输入组件 Json输入组件

3.配置字段选择

移除birthday和register_date 把Phone改为Telephone,id改为key,gender改为sex 配置Excel输出 输出组件 结果

Kettle流程控件

流程主要用来控制数据流程和数据流向

switch case

switch/case组件让数据流从一路到多路。 switch/case

需求:

从 user.json 输入读取数据,按sex进行数据分类,把女性、男性、保密分别保存不同的Excel文件里面。 0表示男性1表示女性2表示保密

实现步骤:

拖入 JSON输入组件,switch/case组件,三个Excel输出组件 组件配置图 配置 switch/case 组件 配置switch/case组件 配置输出文件 结果 excel 输出男excel 输出女excel 输出保密

过滤记录

过滤记录让数据流从一路到两路。

需求:

从 user.json 读取数据,分离出 年龄 大于等于25,小于25的数据,分别保存到不同的Excel文件

实现步骤:

拖入 JSON输入组件、过滤记录组件、两个Excel组件,并连接各个组件 组件配置图 配置过滤记录组件 配置过滤组件 输出组件 输出组件 结果 大于等于25小于25

Kettle连接控件

笛卡尔积

需求:

从Excel读取两位和三位数,完成两位数和三位数的组合(笛卡尔积),把结果保存在Excel

实现步骤:

设计转换结构 配置记录关联(笛卡尔积组件)

记录集连接

记录集连接类似数据库的左连接、右连接、内连接、外连接。在进行记录集连接之前,应该要对记录集进行排序。

需求:

从Excel中读取employees和departments数据,进行内关联,左关联,右关联,全关联,把数据保存到Excel

初始值:

部门:

员工:

实现步骤:

设计以下组件图 组件配置图

2.配置排序记录 为什么要进行设置排序记录,保证数据的准确性

配置记录集连接组件 结果

Kettle作业和参数

Job(作业)

大多数ETL项目都需要完成各种各样的操作,例如:

如何传送文件验证数据库表是否存在,等等

而这些操作都是按照一定顺序完成,Kettle中的作业可以串行执行转换来处理这些操作。

Job Item(作业项)

作业项是作业的基本构成部分。如同转换的组件,作业项也可以用图标的方式展示。

作业顺序执行作业项,必须定义一个起点有一个「start」的作业项专门用来定义起点一个作业只能定一个开始作业项

Job Hop(作业跳)

Job Hop是作业项之间的连接线,定义了作业的执行路径,作业里每个作业项的不同运行结果决定了作业的不同执行路径。以下为 Job Hop的几种执行方式:

无条件执行 不论上一个作业项执行成功还是失败,下一个作业项都会执行蓝色的连接线,上面有一个锁的图标 当运行结果为真时执行

当上一个作业项的执行结果为真时,执行下一个作业项

通常在需要无错误执行的情况下使用

绿色的连接线,上面有一个对钩号的图标。

当运行结果为假时执行 当上一个作业项的执行结果为假或者没有成功执行时,执行下一个作业项红色的连接线,上面有一个红色的停止图标

作业示例

需求:

先从 资料\作业数据源\01Excel输入.xlsx读取数据,保存到Excel再从 资料\作业数据源\01文本文件输入.txt 文本文件中读取数据,保存到Excel启动作业执行 执行错误,显示执行错误消息框执行成功,显示执行成功消息框

实现步骤:

1.创建两个转换
2.组件配置图
3.第一个转换
4.第二个转换
5.消息失败对话框
6.消息成功对话框

参数

参数的使用

对于ETL参数传递是一个很重要的环节,因为参数的传递会涉及到业务数据是如何抽取

转换命名参数

转换命名参数就是在转换内部定义的变量,作用范围是在转换内部

在转换的空白处双击左键,在转换属性中能看到

可以在表输入 SQL语句中使用 ${变量名} 或者 %%变量名%% 直接引用

需求:

设置转换命名参数 default_province = 北京市从t_user表中获取数据,满足条件 province=default_province,后续写入Excel

实现步骤:

设计以下转换组件结构图 转换结构图 配置转换命名参数 设置命名转换参数双击空白处 配置表输入组件 配置表数据组件 执行转换 执行转换 结果 结果

小结

-------------本节到这就结束,看到这里相信大家怎么使用Kettle应该都能熟练的使用了,要多加练习加油

感谢大家的支持,若有什么不正确的地方还请大家能及时的反馈,记得点赞收藏支持一下!

最新回复(0)