Kettle安装与使用

news/2024/10/21 10:02:21/

一、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


http://www.ppmy.cn/news/61339.html

相关文章

基于改进的离散PSO算法的FJSP的研究(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

学计算机的要不要考研?校招工作不喜欢怎么办?怎样才可以年薪百万?

昨天有粉丝私信我 学的计算机 说他大四马上就要毕业了 然后学校分配的这个工作不是很喜欢 问要不要换个方向 然后身边还有一些同学去考研了 说他要不要考研 等等比较典型的一些问题 所以我总结了一下有三个问题 第一个问题 就学计算机的现在工作不好找 要不要考研 第二个问题就…

BetaFlight统一硬件配置文件研读

BetaFlight统一硬件配置文件研读 1. 源由2. 分析2.1 硬件SOC2.2 统一配置文件2.3 cli命令2.4 板级配置主要命令2.4.1 board_name2.4.2 manufacturer_id2.4.3 resource2.4.4 timer2.4.5 dma2.4.6 serial2.4.7 set2.4.8 feature 3. 实例研读3.1 C遗留配置3.2 BoardName - AOCODAR…

普通2本,去过字节外包,到现在年薪25W+的测试开发,我的2年转行心酸经历...

个人简介 我是一个普通二本大学机械专业毕业,17年毕业,19年转行,目前做IT行业的软件测试已经有3年多,职位是高级测试工程师,坐标上海… 我想现在我也有一点资格谈论关于转行这个话题;希望你在决定转行之前…

浅谈Spring中的BeanFactory与FactoryBean

前言 理解FactoryBean是非常非常有必要的,因为在Spring中FactoryBean最为典型的一个应用就是用来创建AOP的代理对象,不仅如此,而且对理解Mybatis核心源码也非常有帮助!如果甘愿crud,做个快乐的码农,那我就哦…

jdk中juc多线程编程工具

jdk线程池实现原理分析 目录 CompletionService CompletableFuture 基本原理 CompletableFuture的接口 静态方法 handle() vs whenComplete() xxxEither() 异常处理exceptionally() 获取任务结果 结束任务 Semaphore CyclicBarrier CountDownLatch jdk线程池实…

RabbitMQ简介

MQ引言 1.1 什么是MQ ​ MQ(Message Quene) : 翻译为消息队列,通过典型的生产者和消费者模型,生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵…

【Java EE】-使用Fiddler抓包以及HTTP的报文格式

作者:学Java的冬瓜 博客主页:☀冬瓜的主页🌙 专栏:【JavaEE】 分享: 在满园弥漫的沉静的光芒之前,一个人更容易看到时间,并看到自己的身影。——史铁生《我与地坛》 主要内容:使用FIddler抓包的…