kettle入门一 安装与基本使用

news2025/6/9 22:55:35

一、kettle概述

1、什么是kettle

Kettle是一款开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。

2、Kettle工程存储方式

(1)以XML形式存储

(2)以资源库方式存储(数据库资源库和文件资源库)

3、Kettle的两种设计

4、Kettle的组成

5、kettle特点


二、kettle安装部署和使用

1、 kettle安装地址(官网地址

https://community.hitachivantara.com/docs/DOC-1009855

下载地址:https://sourceforge.net/projects/pentaho/files/Data%20Integration/

资料下载:

链接:https://pan.baidu.com/s/149fBww3eiD7vLN2p2egCxg

提取码:gyhr

2、Windows下安装使用

(1)概述

在实际企业开发中,都是在本地环境下进行kettle的job和Transformation开发的,可以在本地运行,也可以连接远程机器运行

(2)安装步骤

安装jdk

下载kettle压缩包,因kettle为绿色软件,解压缩到任意本地路径即可

双击Spoon.bat,启动图形化界面工具,就可以直接使用了

3、案例1

案例一 把stu1的数据按id同步到stu2,stu2有相同id则更新数据

(1)在mysql中创建两张表

mysql> create database kettle;
Query OK, 1 row affected (0.00 sec)

mysql> use kettle;
Database changed

mysql>  create table stu1(id int,name varchar(20),age int);
Query OK, 0 rows affected (0.01 sec)

mysql> create table stu2(id int,name varchar(20));
Query OK, 0 rows affected (0.00 sec)

(2)往两张表中插入一些数据

mysql> insert into stu1 values(1001,'zhangsan',20),(1002,'lisi',18), (1003,'wangwu',23);
Query OK, 3 rows affected (0.05 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> insert into stu2 values(1001,'wukong');
Query OK, 1 row affected (0.00 sec)

(3)把pdi-ce-8.2.0.0-342.zip文件拷贝到win环境中指定文件目录,解压后

在kettle中新建转换--->输入--->表输入-->表输入双击

在数据库连接栏目点击新建

以上错误说明,少了mysql-connector-java-5.1.27-bin.jar

解决方法:

在data-integration\lib文件下添加mysql-connector-java-5.1.27-bin.jar

再重启,再次操作

以上说明stu1的数据输入ok的,现在我们需要把输入stu1的数据同步到stu2输出的数据

注意:拖出来的线条必须是深灰色才关联成功,若是浅灰色表示关联失败

转换之前,需要做保存

之后,在mysql查看,stu2的数据,注意(自己转换都是改成N)

mysql> select * from  stu2;
+------+--------+
| id   | name   |
+------+--------+
| 1001 | wukong |
| 1002 | lisi   |
| 1003 | wangwu |
+------+--------+
3 rows in set (0.00 sec)

若:改动

//查出来的数据有所变动
mysql> select * from  stu2;
+------+----------+
| id   | name     |
+------+----------+
| 1001 | zhangsan |
| 1002 | lisi     |
| 1003 | wangwu   |
+------+----------+
3 rows in set (0.00 sec)

4、案例2:使用作业执行上述转换,并且额外在表student2中添加一条数据

(1)新建一个作业

(2) 按图示拉取组件

(3)双击Start编辑Start

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

(5)双击SQL,编辑SQL语句,先在mysql的kettle数据库中插入一条数据

mysql> insert into stu1 values(1004,'stu1',22);
Query OK, 1 row affected (0.01 sec)

之后,加上Dummy,如图所示:

之后,必须保存,不然不会生效

接下来,我们就可以执行了

再次,在mysql数据库查看,有数据了

mysql> select * from stu2;
+------+----------+
| id   | name     |
+------+----------+
| 1001 | zhangsan |
| 1002 | lisi     |
| 1003 | wangwu   |
| 1004 | stu1     |
| 1005 | kettle   |
+------+----------+
5 rows in set (0.00 sec)

5、案例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下

(2)启动hdfs,yarn,hbase集群的所有进程,启动hiveserver2服务

[root@hadoop1 ~]# /opt/module/hadoop-2.7.2/sbin/start-all.sh
开启HBase前启动Zookeeper
[root@hadoop1 ~]# /opt/module/hbase-1.3.1/bin/start-hbase.sh
[root@hadoop1 ~]# /opt/module/hive/bin/hiveserver2

(3)进入beeline,查看10000端口开启情况

[root@hadoop1 ~]# /opt/module/hive/bin/beeline
Beeline version 1.2.1 by Apache Hive
beeline> !connect jdbc:hive2://hadoop1.x:10000(回车)
Connecting to jdbc:hive2://hadoop1.x:10000
Enter username for jdbc:hive2://hadoop1.x:10000: root(输入root)
Enter password for jdbc:hive2://hadoop1.x:10000:(直接回车)
Connected to: Apache Hive (version 1.2.1)
Driver: Hive JDBC (version 1.2.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://hadoop1.x: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

(8)设置排序属性

(9)设置连接属性

(10)设置字段选择

(11)设置文件输出

(12)保存并运行查看hdfs


6、案例4:读取hdfs文件并将sal大于1000的数据保存到hbase中

(1) 在HBase中创建一张表用于存放数据

[root@hadoop1 ~]$ /opt/module/hbase-1.3.1/bin/hbase shell
hbase(main):004:0> create 'people','info'

(2)按下图建立流程图

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

(4)设置过滤记录

(5)设置HBase output

注意:若报错没有权限往hdfs写文件,在Spoon.bat中第119行添加参数

"-DHADOOP_USER_NAME=atguigu" "-Dfile.encoding=UTF-8"


三、创建资源库

1、数据库资源库

数据库资源库是将作业和转换相关的信息存储在数据库中,执行的时候直接去数据库读取信息,很容易跨平台使用

1)点击右上角connect,选择Other Resporitory

2) 选择Database Repository

3) 建立新连接

4) 填好之后,点击finish,会在指定的库中创建很多表,至此数据库资源库创建完成

5) 连接资源库

默认账号密码为admin

6) 将之前做过的转换导入资源库

(1)选择从xml文件导入

(2)随便选择一个转换

(3)点击保存,选择存储位置及文件名

(4)打开资源库查看保存结果

2、文件资源库

将作业和转换相关的信息存储在指定的目录中,其实和XML的方式一样

创建方式跟创建数据库资源库步骤类似,只是不需要用户密码就可以访问,跨

平台使用比较麻烦

1)选择connect

2)点击add后点击Other Repositories

3)选择File Repository

4)填写信息


四、 Linux下安装使用

1、单机

1)jdk安装

2)安装包上传到服务器,解压

注意:1. 把mysql驱动拷贝到lib目录下
2. 将本地用户家目录下的隐藏目录C:\Users\自己用户名\.kettle,整个上传到linux的家目录/home/MrZhou/下

3)运行数据库资源库中的转换:

[root@hadoop1 data-integration]$./pan.sh -rep=my_repo -user=admin -pass=admin -trans=stu1tostu2 -dir=/

参数说明:

-rep 资源库名称
-user 资源库用户名
-pass 资源库密码
-trans 要启动的转换名称
-dir 目录(不要忘了前缀 /)

4)运行资源库里的作业:

记得把作业里的转换变成资源库中的资源

[root@hadoop1 data-integration]$./kitchen.sh -rep=repo1 -user=admin -pass=admin -job=jobDemo1 -logfile=./logs/log.txt -dir=/
参数说明:
-rep - 资源库名
-user - 资源库用户名
-pass – 资源库密码
-job – job名
-dir – job路径
-logfile – 日志目录

2、 集群模式(了解)

1) 准备三台服务器,hadoop1.x作为Kettle主服务器,服务器端口号为8080,hadoop2.x和hadoop3.x作为两个子服务器,端口号分别为8081和8082。

2) 安装部署jdk

3) hadoop完全分布式环境搭建,并启动进程(因为要使用hdfs)

4) 上传解压kettle的安装包

5) 进到/opt/module/data-integration/pwd目录,修改配置文件

修改主服务器配置文件carte-config-master-8080.xml

<slaveserver>
    <name>master</name>
    <hostname>hadoop1.x</hostname>
    <port>8080</port>
    <master>Y</master>
    <username>cluster</username>
    <password>cluster</password>
  </slaveserver>

修改从服务器配置文件carte-config-8081.xml

 <masters>
    <slaveserver>
      <name>master</name>
      <hostname>hadoop102</hostname>
      <port>8080</port>
      <username>cluster</username>
      <password>cluster</password>
      <master>Y</master>
    </slaveserver>
  </masters>
  <report_to_masters>Y</report_to_masters>
  <slaveserver>
    <name>slave1</name>
    <hostname>hadoop2.x</hostname>
    <port>8081</port>
    <username>cluster</username>
    <password>cluster</password>
    <master>N</master>
  </slaveserver>

修改从配置文件carte-config-8082.xml

<masters>
    <slaveserver>
      <name>master</name>
      <hostname>hadoop102</hostname>
      <port>8080</port>
      <username>cluster</username>
      <password>cluster</password>
      <master>Y</master>
    </slaveserver>
  </masters>
  <report_to_masters>Y</report_to_masters>
  <slaveserver>
    <name>slave2</name>
    <hostname>hadoop3.x</hostname>
    <port>8082</port>
    <username>cluster</username>
    <password>cluster</password>
    <master>N</master>
  </slaveserver>

6) 分发整个kettle的安装目录,xsync data-integration

7) 启动相关进程,在hadoop1.x,hadoop2.x,hadoop3.x上执行

[root@hadoop1.x data-integration]# ./carte.sh hadoop1.x 8080
[root@hadoop2.x data-integration]#./carte.sh hadoop2.x 8081
[root@hadoop3.x data-integration]#./carte.sh hadoop3.x 8082

8) 访问web页面

http://hadoop1.x:8080


3、案例:读取hive中的emp表,根据id进行排序,并将结果输出到hdfs上

注意:因为涉及到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下

(1) 创建转换,编辑步骤,填好相关配置

(2) 创建子服务器,填写相关配置,跟集群上的配置相同

(3) 创建集群schema,选中上一步的几个服务器

(4) 对于要在集群上执行的步骤,右键选择集群,选中上一步创建的集群schema

(5) 创建Run Configuration,选择集群模式,直接运行


五、调优

1、调整JVM大小进行性能优化,修改Kettle根目录下的Spoon脚本。

参数参考:

-Xmx2048m:设置JVM最大可用内存为2048M。

-Xms1024m:设置JVM促使内存为1024m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

-Xmn2g:设置年轻代大小为2G。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

-Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。

2、 调整提交(Commit)记录数大小进行优化,Kettle默认Commit数量为:1000,可以根据数据量大小来设置Commitsize:1000~50000

3、尽量使用数据库连接池;

4、尽量提高批处理的commit size;

5、尽量使用缓存,缓存尽量大一些(主要是文本文件和数据流);

6、Kettle是Java做的,尽量用大一点的内存参数启动Kettle;

7、可以使用sql来做的一些操作尽量用sql;

Group , merge , stream lookup,split field这些操作都是比较慢的,想办法避免他们.,能用sql就用sql;

8、插入大量数据的时候尽量把索引删掉;

9、尽量避免使用update , delete操作,尤其是update,如果可以把update变成先delete, 后insert;

10、能使用truncate table的时候,就不要使用deleteall row这种类似sql合理的分区,如果删除操作是基于某一个分区的,就不要使用delete row这种方式(不管是deletesql还是delete步骤),直接把分区drop掉,再重新创建;

11、尽量缩小输入的数据集的大小(增量更新也是为了这个目的);

12、尽量使用数据库原生的方式装载文本文件(Oracle的sqlloader, mysql的bulk loader步骤)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1504265.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Axure基础 各元件的作用及介绍

图像热区 增加按钮或者文本的点击区域&#xff0c;他是透明的&#xff0c;在预览时看不见。 动态面板 用来绘制一下带交互效果的元件&#xff0c;他是动态的&#xff0c;如轮播图&#xff0c;一个动态面板里可以有多个子面板&#xff0c;每一个子面板对应着不同的效果。 他…

像SpringBoot一样使用Flask - 4.拦截器

接上文《像SpringBoot一样使用Flask - 3.蓝图路由Blueprint》&#xff0c;我们已经整理了一个干净的"启动类"&#xff0c;现在要加入一些拦截器&#xff0c;为了方便统一管理。 一、常用的拦截器 # 拦截器 app.before_request def handle_before_request():"&qu…

文献阅读:DEA-Net:基于细节增强卷积和内容引导注意的单图像去雾

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 摘要Abstract文献阅读&#xff1a;DEA-Net&#xff1a;基于细节增强卷积和内容引导注意的单图像去雾1、研究背景2、方法提出3、相关知识3.1、DEConv3.3、多重卷积的…

Consul(安装,服务注册与发现,服务配置与动态刷新,配置持久化)

1.下载安装Consul 下载地址:Install | Consul | HashiCorp Developer 解压后只有一个.exe文件&#xff0c;运行后在该文件路径下输入consul --version 启动consul开发模式:consul agent -dev 访问localhost:8500进去consul主页 2.服务注册与发现 官方配置手册:Quick Start :…

进程控制(二) 进程等待与进程替换

目录 一、进程等待 理解进程等待 演示进程等待 获取进程的status 进程等待接口讲解 wait用法​ waitpid用法 等待多进程 基于非阻塞调用的轮询式检测 二、进程程序替换 excel接口 程序替换演示 单进程程序替换 多进程程序替换 程序替换原理 单进程程序替换 多…

Web Worker:JavaScript的后台任务解决方案

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

阿里云服务器ECS u1实例2核4G5M带宽优惠价199元/年性能测评

阿里云服务器ECS u1实例&#xff0c;2核4G&#xff0c;5M固定带宽&#xff0c;80G ESSD Entry盘优惠价格199元一年&#xff0c;性能很不错&#xff0c;CPU采用Intel Xeon Platinum可扩展处理器&#xff0c;购买限制条件为企业客户专享&#xff0c;实名认证信息是企业用户即可&a…

每日OJ题_牛客HJ60 查找组成一个偶数最接近的两个素数

目录 牛客HJ60 查找组成一个偶数最接近的两个素数 解析代码 牛客HJ60 查找组成一个偶数最接近的两个素数 查找组成一个偶数最接近的两个素数_牛客题霸_牛客网 解析代码 #include <cmath> #include <iostream> using namespace std; bool isPrime(int n) {for (…

STM32H750片外QSPI启动配置简要

STM32H750片外QSPI启动配置简要 &#x1f4cd;参考信息源&#xff1a;《STM32H750片外Flash启动(W25Q64JVSIQ)》&#x1f516;本例程基于Keil MDk开发平台。&#x1f341;配置框架&#xff1a; ✨为什么使用要使用QSPI启动方式 不管对于STM32H7系列单片机&#xff0c;还是其他…

BC134 蛇形矩阵

一&#xff1a;题目 二&#xff1a;思路分析 2.1 蛇形矩阵含义 首先&#xff0c;这道题我们要根据这个示例&#xff0c;找到蛇形矩阵是怎么移动的 这是&#xff0c;我们可以标记一下每次移动到方向 我们根据上图可以看出&#xff0c;蛇形矩阵一共有两种方向&#xff0c;橙色…

解决ChatGPT发送消息没有反应

ChatGPT发消息没反应 今天照常使用ChatGPT来帮忙码代码&#xff0c;结果发现发出去的消息完全没有反应&#xff0c;即不给我处理&#xff0c;也没有抱任何的错误&#xff0c;按浏览器刷新&#xff0c;看起来很正常&#xff0c;可以查看历史对话&#xff0c;但是再次尝试还是一…

一分钟了解遥感中卫星、传感器、波段及数据之间的关系

感是利用卫星、飞机或其他载具上的传感器对地球表面进行观测和测量的科学技术。以下是一些常见的遥感相关术语&#xff1a; 卫星&#xff08;Satellite&#xff09;&#xff1a;在遥感中&#xff0c;卫星是指绕地球轨道运行的人造卫星&#xff0c;其主要任务是携带各种传感器从…

qt+opencv人脸人眼检测识别

项目运行涉及到opencv库&#xff0c;以及haarcascade_frontalface_default.xml和haarcascade_eye_tree_eyeglasses.xml。qt配置opencv可见先前文章&#xff0c;另外这两份OpenCV 中用于眼睛检测的级联分类器xml文件&#xff0c;是我在网上下载的。 把要使用到的文件都放到当前…

指针的学习5

目录 sizeof和strlen的区别 sizeof strlen 数组和指针笔试题解析 一维数组 字符数组 二维数组 指针运算笔试题解析 题目1&#xff1a; 题目2&#xff1a; 题目3&#xff1a; 题目4&#xff1a; 题目5&#xff1a; 题目6&#xff1a; 题目7&#xff1a; sizeof和…

Unity Shader实现UI流光效果

效果&#xff1a; shader Shader "UI/Unlit/Flowlight" {Properties{[PerRendererData] _MainTex("Sprite Texture", 2D) "white" {}_Color("Tint", Color) (1, 1, 1, 1)[MaterialToggle] PixelSnap("Pixel snap", float…

一个爬虫自动化数据采集的故事~

目录 一、原文二、故事前半段背景内容三、正经的讲点DrissionPage知识四、故事的收尾 一、原文 原文来自一个爬虫自动化数据采集的故事~ , 建议点击链接看文章末尾的视频笔者不擅长自动化&#xff0c;一个小小故事分享给大家&#xff0c;仅个人观点 二、故事前半段背景内容 …

【C++】c++入门之递归上 数值类

文章目录 前言一、 递归1.1 基本概念1.2 递归的过程1.3 使用场景 二、例题讲解问题一&#xff1a;1002 - 编程求解123...n问题二&#xff1a;1241 - 角谷猜想问题三&#xff1a;1108 - 正整数N转换成一个二进制数问题四&#xff1a;1088 - 求两个数M和N的最大公约数 三、练习问…

【扩散模型系列3】DiT开源项目

文章目录 DiT原始项目Fast-DiT readmeSamplingTraining训练之前的准备训练DiTPyTorch 训练结果改进训练效果 Evaluation (FID, Inception Score, etc.) 总结 DiT原始项目 该项目仅针对DiT训练&#xff0c;并未包含VAE 的训练 项目地址 论文主页 Fast-DiT readme 该项目仅针…

【毕业】 医药药店销售管理系统

1、引言 设计结课作业,课程设计无处下手&#xff0c;网页要求的总数量太多&#xff1f;没有合适的模板&#xff1f;数据库&#xff0c;java&#xff0c;python&#xff0c;vue&#xff0c;html作业复杂工程量过大&#xff1f;毕设毫无头绪等等一系列问题。你想要解决的问题&am…

OpenJDK 目前主要发展方向

Loom&#xff1a;得赶紧解决 synchronized pin 线程的问题&#xff08;据说 Java 23 会解决&#xff0c;现在有预览版&#xff09;。各个 Java 库需要改造原来使用 ThreadLocal 的方式&#xff1a;如果是为了穿参数&#xff0c;则可以使用 ScopedLocal&#xff1b;如果是对象池…