大家好,欢迎来到本篇博客,博主是一名刚入大数据行业的小白,利用空闲的时间来分享自己所学的知识,帮助和博主一样刚处于起步阶段的同学,水平不高,若有什么错误和纰漏之处恳请大佬不吝赐教,目前个人博客只有:https://zhenyu.blog.csdn.net/,感谢大家的支持,谢谢 送给大家一句话:今日事,今日毕
本篇博客主要讲解:了解Kettle,掌握Kettle
目标:
学会使用Kettle下载数据源:点击下载数据源_提取码:1314
---------------------------------------先一起看一下大数据岗位的基本要求 ---------------------------------------可以看到,学习KETTLE是我们的重中之重
-------------对于企业或行业应用来说,经常会遇到各种数据的处理,转换,迁移,掌握一种etl工具的使用,必不可少,这里要学习的ETL工具是——Kettle,现在已经更名为PDI。
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装
Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出
Kettle允许管理来自不同数据库的数据,提供一个图形化的用户环境来描述想做什么,无需关心怎么做
环境要求:
安装、配置好JDK -------------点击下载Kettle_提取码:1314解压Kettle
解压后双击spoon.bat
启动spoon 启动后结果数据源:
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输出组件
3、配置CSV输入组件
右键选择CSV文件输入选择要进行导入的CSV数据源点击 「获取字段」,读取CSV中的列点击 「预览」,浏览CSV中的数据配置Excel组件
5. 点击 三角形 箭头执行 6. 结果
需求:
将 资料\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的数据
操作步骤:
拖入一个 输入/自定义常量数据、输出/删除 组件
连接两个组件
配置自定义常量数据组件
配置删除组件
结果
查看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/test5. 创建Hadoop Clusters 具体步骤如下: -------------点击测试结果如图片右侧展示效果说明整合hadoop环境没有问题!!点击确定保存以上操作即可!! -------------查看链接是否保存: -------------如果与hadoop链接没有保存后续是无法操作hadoop集群!!
-------------Kettle在Big data分类中提供了一个Hadoop file input 组件用来从hdfs文件系统中读取数据。 需求:
从Hadoop文件系统读取/hadoop/test/1.txt文件,把数据输入到Excel中。实现步骤:
拖入以下组件 配置Hadoop File Input组件 指定hdfs的目标路径:指定文件内容格式:点击字段查看获取字段是否正确:配置excel输出组件:点击excel输出组件获取字段查看字段是否正确:启动转换任务:结果-------------Kettle在Big data分类中提供了一个Hadoop file output 组件用来向hdfs文件系统中保存数据
需求:
读取 user.json 把数据写入到hdfs文件系统的的/hadoop/test/2.txt中。实现步骤:
拖入以下组件
配置 JSON 输入组件
指定json文件的路径 配置json input组件读取的字段配置Hadoop file output组件
指定hdfs目标路径指定源文件的属性信息:结果:启动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;hive数据库是通过jdbc来进行连接,可以通过表输入控件来获取数据。 需求:
从hive数据库的test库的a表中获取数据,并把数据保存到Excel中。 实现步骤:
设计一下kettle组件结构
选择输入文件夹内的表输入组件:配置表输入组件
新建hivejdbc连接:配置excel输出组件
hive数据库是通过jdbc来进行连接,可以通过表输出控件来保存数据。 需求:
从Excel资料\02.kettle测试数据\01.用户数据源\file_user.xls中读取数据,把数据保存在hive数据库的test数据库的t_user表。 实现步骤:设计如下kettle组件结构
配置 Excel输入组件
配置表输出组件
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组件 测试数据是否生成转换是ETL的T,T就是Transform清洗、转换
ETL三个部分中,T花费时间最长,是“一般情况下这部分工作量是整个ETL的2/3
需求:
从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输出 输出组件 结果需求:
从 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需求:
从Excel读取两位和三位数,完成两位数和三位数的组合(笛卡尔积),把结果保存在Excel实现步骤:
设计转换结构 配置记录关联(笛卡尔积组件)需求:
从Excel中读取employees和departments数据,进行内关联,左关联,右关联,全关联,把数据保存到Excel初始值:
部门:
员工:
实现步骤:
设计以下组件图 组件配置图2.配置排序记录 为什么要进行设置排序记录,保证数据的准确性
配置记录集连接组件 结果大多数ETL项目都需要完成各种各样的操作,例如:
如何传送文件验证数据库表是否存在,等等而这些操作都是按照一定顺序完成,Kettle中的作业可以串行执行转换来处理这些操作。
作业项是作业的基本构成部分。如同转换的组件,作业项也可以用图标的方式展示。
作业顺序执行作业项,必须定义一个起点有一个「start」的作业项专门用来定义起点一个作业只能定一个开始作业项Job Hop是作业项之间的连接线,定义了作业的执行路径,作业里每个作业项的不同运行结果决定了作业的不同执行路径。以下为 Job Hop的几种执行方式:
无条件执行 不论上一个作业项执行成功还是失败,下一个作业项都会执行蓝色的连接线,上面有一个锁的图标 当运行结果为真时执行当上一个作业项的执行结果为真时,执行下一个作业项
通常在需要无错误执行的情况下使用
绿色的连接线,上面有一个对钩号的图标。
当运行结果为假时执行 当上一个作业项的执行结果为假或者没有成功执行时,执行下一个作业项红色的连接线,上面有一个红色的停止图标需求:
先从 资料\作业数据源\01Excel输入.xlsx读取数据,保存到Excel再从 资料\作业数据源\01文本文件输入.txt 文本文件中读取数据,保存到Excel启动作业执行 执行错误,显示执行错误消息框执行成功,显示执行成功消息框实现步骤:
1.创建两个转换参数的使用
对于ETL参数传递是一个很重要的环节,因为参数的传递会涉及到业务数据是如何抽取转换命名参数
转换命名参数就是在转换内部定义的变量,作用范围是在转换内部
在转换的空白处双击左键,在转换属性中能看到
可以在表输入 SQL语句中使用 ${变量名} 或者 %%变量名%% 直接引用
需求:
设置转换命名参数 default_province = 北京市从t_user表中获取数据,满足条件 province=default_province,后续写入Excel实现步骤:
设计以下转换组件结构图 转换结构图 配置转换命名参数 设置命名转换参数双击空白处 配置表输入组件 配置表数据组件 执行转换 执行转换 结果 结果-------------本节到这就结束,看到这里相信大家怎么使用Kettle应该都能熟练的使用了,要多加练习加油
感谢大家的支持,若有什么不正确的地方还请大家能及时的反馈,记得点赞收藏支持一下!