一、Kettle简介
- Kettle最早是一个开源的ETL(Extract-Transform-Load的缩写)工具,全称为KDE Extraction, Transportation, Transformation and Loading Environment。后来Kettle重命名为Pentaho Data Integration 。
- 它由Java开发,支持跨平台运行,其特性包括:支持100%无编码、拖拽方式开发ETL数据管道;可对接包括传统数据库、文件、大数据平台、接口、流数据等数据源;支持ETL数据管道加入机器学习算法。
- Kettle是一个实现ETL开发的一款开发工具,Spoon是Kettle工具提供的图形化界面。
1.1、主要功能
Pentaho Data Integration作为一个端对端的数据集成平台,可以对多种数据源进行抽取(Extraction)、加载(Loading)、数据落湖(Data Lake Injection)、对数据进行各种清洗(Cleasing)、转换(Transformation)、混合(Blending),并支持多维联机分析处理(OLAP)和数据挖掘(Data mining)。
1.2、运行环境
Pentaho Data Integration服务器端支持:Windows Server, CentOS, RHEL, Ubuntu
Pentaho Data Integration开发客户端(Spoon)支持:Windows, Ubuntu Desktop, MacOS
Pentaho User Console(浏览器端)支持:Internet Explorer, Chrome, Firefox,
Safari, Edge
Kettle安装
2.1、安装JDK
链接:百度云盘下载链接:百度网盘 请输入提取码
提取码:e5xp
下载后解压文件即可。
2.2、下载地址
Kettle是一款免安装软件,下载后即可直接运行。下载地址:Kettle官网http://www.kettle.org.cn/download
链接:百度云盘下载链接:https://pan.baidu.com/s/1gxI3PmuxjlnMx4aN1mROug
提取码:lxyb
下载后解压文件即可。
2.2、运行Kettle
- 因为Kettle是纯java编写,所以启动前要先预装JDK并配置环境变量。
- Windows下双击Spoon.bat文件运行Kettle,打开spoon图形工具。
- 在Linux、AppleOSX、Solaris平台上,双击Spoon.sh运行。
当出现下图所示,则说明启动成功。
2.3、导入数据库驱动jar包
看你需要连接什么数据库,就将数据库的驱动jar包放到xxx\pdi-ce-7.1.0.0-12\data-integration\lib目录下,重启spoon即可。
Oracle/Mysql驱动下载链接:
链接:https://pan.baidu.com/s/15PafokxwSyFQtdMQuLKHOg
提取码:q2m4
三、Kettle使用
3.1、配置资源库与数据库
- 现在让我们重新双击Spoon.bat,运行Kettle工具。
- 点击右上角的connect标志,出现弹窗(如下图),点击Other Repositories。
- 在新的弹窗中选择Database Repository选项,点击Get Started。
- 输入资源库名称(自定义),点击Database Connection创建数据库连接。
- 点击创建新的数据库连接。
- 这里左侧有5种连接方式,按自己需求进行选择,默认选一般;数据库连接名称(自定义);数据类型,什么数据库就选什么,我这里是连接Oracle数据,所以选择Oracle;
- 连接方式,默认选第一个;最后再将你的数据库连接信息(IP,端口,库名称,用户名和密码)填写上就OK。
填好后,点击测试按钮,出现如下图的弹窗即连接成功,然后点击确定按钮。
- 可以看到刚刚连接的数据库sourceDB,这里我是创建两个数据源,通过点击新增按钮可以创建多个数据源连接。
- 选中数据源,即可对其进行编辑,删除操作。
- 最后点击Back返回。
点击Finish按钮,即可。
创建成功,选中Connect Now。
- 进入登录页面,默认是admin用户,密码也是admin,启动后可以修改用户密码或添加其他用户。
注意事项:这里在配置数据源时,虽然成功了,但是在后面创建作业选择数据库时,可能出现刚刚配置的数据库不见了,可以在创建作业后,再重新配置一下数据库(如下图)。具体原因还不清楚
3.2、修改、添加用户信息
点击工具–>资源库–>探索资源按钮,或者直接点击下图红色框中的图标。
选择安全按钮,即可新增、编辑、删除用户信息。
好啦,以上就是Kettle的安装配置教程
1.1 什么是kettle
Kettle是一款开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。
1.2 Kettle核心知识点
1.2.1 Kettle工程存储方式
1) 以XML形式存储
2) 以资源库方式存储(数据库资源库和文件资源库)
1.2.2 Kettle的两种设计
简述:Transformation(转换):完成针对数据的基础转换。
Job(作业):完成整个工作流的控制。
区别:(1)作业是步骤流,转换是数据流,这是作业和转换的最大区别
(2)作业的每一个步骤,必须等到前面的步骤都跑完了,后面的步骤才会执行;而转换会一次性把所有控件全部先启动(一个空间对应启动一个线程),然后数据流会从第一个控件开始,一条记录,一条记录地流向最后的控件。
1.2.3 Kettle的组成
勺子(spoon.bat/spoon.sh):是一个图形化的界面,可以让我们用图形化的方式开发转换和作业。Windows选择spoon.bat;Linux选择spoon.sh
煎锅(pan.bat/pan.sh):利用pan可以用命令行的形式调用Trans
厨房(kitchen.bat/kitchen.sh):利用kitchen可以使用命令调用Job
菜单(carte.bat/carte.sh):carte是一个轻量级的web容器,用于建立专用、远程的ETL Server
1.3 kettle特点
免费开源:基于Java的免费开源的软件,对商业用户也没有限制
易配置:可以在window、Linux、unix上运行,绿色无需安装,数据抽取高效稳定
不同数据库:ETL工具集,它允许你管理来自不同数据库的数据
两种脚本文件:transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制
图形化界面设计:通过图形化设计实现做什么业务,无需写代码去实现
定时功能:在job下的start模块,有一个定时功能,可以每日、每周等方式进行定时。
第2章 kettle安装部署和使用
2.1 kettle安装地址
官网地址
Home - Hitachi Vantara
下载地址
https://sourceforge.net/projects/pentaho/files/Data%20Integration/
kettle各版本国内镜像下载地址:http://mirror.bit.edu.cn/pentaho/(下载速度相对快一些)
2.2 Windows下安装使用
2.2.1 概述
在实际企业开发中,都是在本地环境下进行kettle的job和Transformation开发的,可以在本地运行,也可以连接远程机器运行
2.2.2 安装
1) 安装jdk
2) 下载kettle压缩包,因kettle为绿色软件,解压缩到任意本地路径即可
3) 双击Spoon.bat,启动图形化界面工具,就可以直接使用了
2.2.3 案例
1) 案例一 把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)往两张表中插入一些数据
mysql> insert into stu1 values(1001,'zhangsan',20),(1002,'lisi',18), (1003,'wangwu',23);
mysql> insert into stu2 values(1001,'wukong');
(3)在kettle中新建转换
(4)分别在输入和输出中拉出表输入和插入/更新
(5)双击表输入对象,填写相关配置,测试是否成功
(6)双击 更新/插入对象,填写相关配置
编辑映射,添加需要的字段,因为表stu2中没有age,所以不需要Add
(7)保存转换,启动运行,去mysql表查看结果
注意:如果需要连接mysql数据库,需要要先将mysql的连接驱动包复制到kettle的根目录下的lib目录中,否则会报错找不到驱动。
2) 案例2:使用作业执行上述转换,并且额外在表stu2中添加一条数据
(1)新建一个作业
(2) 按图示拉取组件
(3)双击Start编辑Start
(4)双击转换,选择案例1保存的文件
(5)双击SQL,编辑SQL语句
(6)保存执行
运行之前,查看数据:
运行之后查看结果:会发现除了刚才我们写的,insert语句之外,stu1表中的id为1004的也插入到stu2中了,因为我们执行了stu1tostu2.ktr转换。
注:转换和作业的后缀不同
3)案例3:将hive表的数据输出到hdfs
(1)因为涉及到hive和hbase的读写,需要修改相关配置文件。
修改解压目录下的data-integration\plugins\pentaho-big-data-plugin下的plugin.properties,设置active.hadoop.configuration=hdp26,并将如下配置文件从集群上拷贝到data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp26下
注意:以上操作完,需要重启kettle才能生效
(2)启动hdfs,yarn,zookeeper,hbase集群的所有进程,启动hiveserver2服务
[root@node4 hadoop-2.6.4]# sbin/start-dfs.sh
[root@node4 hadoop-2.6.4]# sbin/start-yarn.sh
三台服务器分别开启HBase前启动Zookeeper
[root@node4 hadoop-2.6.4]# zkServer.sh start
[root@node5 hadoop-2.6.4]# zkServer.sh start
[root@node6 hadoop-2.6.4]# zkServer.sh start
开启hbase
[root@node4 hbase-1.2.3]# bin/start-hbase.sh
开启hive2
[root@node4 ~]# hiveserver2
(3)进入beeline,查看10000端口开启情况
[root@node4 ~]# beeline(回车)
Beeline version 2.1.0 by Apache Hive
beeline> !connect jdbc:hive2://node4:10000
Connecting to jdbc:hive2://node4:10000
Enter username for jdbc:hive2://node4:10000: root(输入用户名,回车)
Enter password for jdbc:hive2://node4:10000: ******(输入密码,回车)
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/module/hive/apache-hive-2.1.0-bin/lib/hive-jdbc-2.1.0-standalone.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/module/hadoop/hadoop-2.6.4/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Connected to: Apache Hive (version 2.1.0)
Driver: Hive JDBC (version 2.1.0)
20/05/23 20:05:58 [main]: WARN jdbc.HiveConnection: Request to set autoCommit to false; Hive does not support autoCommit=false.
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://node4:10000>(到了这里说明成功开启10000端口)
(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';
(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);
(6)按下图建立流程图
(7)设置表输入,连接hive
表输入1
表输入2
(8)设置排序属性
(9)设置连接属性
(10)设置字段选择
“选择和修改”、“元数据”什么都不操作即可,只操作“移除”。如果操作了“元数据”,那么要注意和“移除”比较一下,字段是否一致,不然会报错。
(11)设置文件输出
跟前端页面一致
(12)保存并运行查看hdfs
我们下载下来看一下:
4)案例4:读取hdfs文件并将sal大于1000的数据保存到hbase中
(1) 在HBase中创建一张表用于存放数据
[root@node4 ~]# hbase shell
hbase(main):002:0> create 'people','info'
(2)按下图建立流程图
(3)设置文件输入,连接hdfs
(4)设置过滤记录
(5)设置HBase output
注意:若报错没有权限往hdfs写文件,在Spoon.bat中第119行添加参数
"-DHADOOP_USER_NAME=node4" "-Dfile.encoding=UTF-8"
(6) 保持并运行,查看hbase
2.3 创建资源库
2.3.1 数据库资源库
数据库资源库是将作业和转换相关的信息存储在数据库中,执行的时候直接去数据库读取信息,很容易跨平台使用
1)点击右上角connect,选择Other Resporitory
2) 选择Database Repository
3) 建立新连接
4) 填好之后,点击finish,会在指定的库中创建很多表,至此数据库资源库创建完成
5) 连接资源库
默认账号密码为admin
6) 将之前做过的转换导入资源库
(1)选择从xml文件导入
(2)随便选择一个转换
(3)点击保存,选择存储位置及文件名
(4)打开资源库查看保存结果
2.3.2 文件资源库
将作业和转换相关的信息存储在指定的目录中,其实和XML的方式一样
创建方式跟创建数据库资源库步骤类似,只是不需要用户密码就可以访问,跨
平台使用比较麻烦
1)选择connect
2)点击add后点击Other Repositories
3)选择File Repository
4)填写信息
————————————————
版权声明:本文为CSDN博主「AllenGd」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Allenzyg/article/details/106308363