kettle的基本介绍和使用

news2024/11/27 18:33:00

1、 kettle概述

1.1 什么是kettle

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

1.2 Kettle核心知识点

1.2.1 Kettle工程存储方式

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

1.2.2 Kettle的两种设计

在这里插入图片描述

1.2.3 Kettle的组成

在这里插入图片描述

1.3 kettle特点

在这里插入图片描述

2、 kettle安装部署和使用

2.1 kettle安装地址

官网地址
https://community.hitachivantara.com/docs/DOC-1009855
下载地址
https://sourceforge.net/projects/pentaho/files/Data%20Integration/

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)双击 更新/插入对象,填写相关配置

在这里插入图片描述
(7)保存转换,启动运行,去mysql表查看结果
注意:如果需要连接mysql数据库,需要要先将mysql的连接驱动包复制到kettle的根目录下的lib目录中,否则会报错找不到驱动。

在这里插入图片描述

  1. 案例2:使用作业执行上述转换,并且额外在表student2中添加一条数据
    (1)新建一个作业

在这里插入图片描述
(2) 按图示拉取组件

在这里插入图片描述
(3)双击Start编辑Start

在这里插入图片描述
(4)双击转换,选择案例1保存的文件

在这里插入图片描述
(5)双击SQL,编辑SQL语句

在这里插入图片描述
(6)保存执行
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下

在这里插入图片描述
(2)启动hdfs,yarn,hbase集群的所有进程,启动hiveserver2服务

[ybb@hadoop102 ~]$ /opt/module/hadoop-2.7.2/sbin/start-all.sh

开启HBase前启动Zookeeper

[ybb@hadoop102 ~]$ /opt/module/hbase-1.3.1/bin/start-hbase.sh
[ybb@hadoop102 ~]$ /opt/module/hive/bin/hiveserver2

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

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

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)填写信息

在这里插入图片描述

2.4 Linux下安装使用

2.4.1 单机

1)jdk安装
2)安装包上传到服务器,解压
注意:1. 把mysql驱动拷贝到lib目录下
2. 将本地用户家目录下的隐藏目录C:\Users\自己用户名.kettle,整个上传到linux的家目录/home/ybb/下
3)运行数据库资源库中的转换:
[ybb@hadoop102 data-integration]$./pan.sh -rep=my_repo -user=admin -pass=admin -trans=stu1tostu2 -dir=/
参数说明:
-rep 资源库名称
-user 资源库用户名
-pass 资源库密码
-trans 要启动的转换名称
-dir 目录(不要忘了前缀 /)

在这里插入图片描述

4)运行资源库里的作业:
记得把作业里的转换变成资源库中的资源
[ybb@hadoop102 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.4.2 集群模式

  1. 准备三台服务器,hadoop102作为Kettle主服务器,服务器端口号为8080,hadoop103和hadoop104作为两个子服务器,端口号分别为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>hadoop102</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>hadoop103</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>hadoop104</hostname>
    <port>8082</port>
    <username>cluster</username>
    <password>cluster</password>
    <master>N</master>
  </slaveserver>
  1. 分发整个kettle的安装目录,xsync data-integration

  2. 启动相关进程,在hadoop102,hadoop103,hadoop104上执行
    [ybb@hadoop102 data-integration] . / c a r t e . s h h a d o o p 1028080 [ y b b @ h a d o o p 103 d a t a − i n t e g r a t i o n ] ./carte.sh hadoop102 8080 [ybb@hadoop103 data-integration] ./carte.shhadoop1028080[ybb@hadoop103dataintegration]./carte.sh hadoop103 8081
    [ybb@hadoop104 data-integration]$./carte.sh hadoop104 8082

  3. 访问web页面
    http://hadoop102:8080

  4. 案例:读取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,选择集群模式,直接运行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、 调优

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/1365675.html

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

相关文章

Flutter 图片和资源的高效使用指南

文章目录 指定资源什么是 [pubspec.yaml](https://dart.cn/tools/pub/pubspec) 文件 图片图片常用的配置属性加载本地图片通过 pubspec.yml 文件进行配置图片目录使用 Image.asset 小部件加载本地图片 加载网络图片通过 Image.network小部件加载网络图片&#xff1a;使用Image.…

Idea将xml文件配置为模板

在配置mybatis的mapper映射文件的时候&#xff0c;通常需要到官网拷贝配置文件的内容&#xff0c;这里直接将xml的文件配置为模板&#xff0c;下次可以直接进行创建。

解锁Mac的无限可能:Sensei for Mac - 你的全能系统优化清理助手

你是否经常为Mac的缓慢速度和不断积累的缓存文件而感到烦恼&#xff1f;不用担心&#xff0c;因为今天&#xff0c;我要向您介绍一款全新的系统优化清理工具 - Sensei for Mac。 作为一款卓越的系统清理工具&#xff0c;Sensei for Mac在保持您的Mac系统流畅运行的同时&#x…

1-04C语言执行过程

一、概述 本小节主要讲解一个C程序从源代码到最终执行的过程&#xff0c;这个过程又可以细分为两部分&#xff1a; 源代码到可执行文件的过程可执行文件在内存中执行 本小节是C语言基础当中&#xff0c;比较容易被初学者忽视的知识点。而实际上&#xff1a; 熟悉C程序从源文…

【flink番外篇】9、Flink Table API 支持的操作示例(14)- 时态表的join(java版本)

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点&#xff0c;并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分&#xff0c;比如术语、架构、编程模型、编程指南、基本的…

模板管理支持批量操作,DataEase开源数据可视化分析平台v2.2.0发布

2024年1月8日&#xff0c;DataEase开源数据可视化分析平台正式发布v2.2.0版本。 这一版本的功能升级包括&#xff1a;在“模板管理”页面中&#xff0c;用户可以通过模板管理的批量操作功能&#xff0c;对已有模板进行快速重新分类、删除等维护操作&#xff1b;数据大屏中&…

Flutter 小技巧之升级适配 Xcode15

美好的 2024 从「适配」开始&#xff0c;按照苹果的尿性&#xff0c;2024 春季开始大家将不得使用 Xcode15 来构建 App &#xff0c;另外根据《2024 的 iOS 的隐私清单》 要求&#xff0c;使用 Flutter 的开发者是无法逃避适配 Xcode15 更新的命运。 另外&#xff0c;众所周知…

NFS 共享存储实验

一、服务器部署 第一步、安装nfs和rpcbind包 [rootserver ~]# yum install -y nfs-utils rpcbind截图&#xff1a; 第二步、这里选择一个 lvm 挂载点做 NFS 共享目录 [rootserver ~]# df -HT截图&#xff1a; 第三步、修改配置文件 [rootserver ~]# vi /etc/exports /home …

【数据库原理】(14)数据控制

数据控制也称为数据保护,包括数据的安全性控制、完整性控制、并发控制和恢复。 数据库的安全性是指保护数据库,防止不合法的使用所造成的数据泄露和破坏。数据库系统中保证数据安全性的主要措施是进行存取控制,即规定不同用户对不同数据对象所允许的执行操作&#xff0c;并规定…

干货|为什么选择独立站?

独立站就像是一个独立的王国&#xff0c;有自己独立的服务器、网站程序和域名。它与依赖平台的模式不同&#xff0c;搭建独立网站可以提供更好的用户体验&#xff0c;建立自己的私域流量&#xff0c;让商家与客户建立更紧密的联系。独立站与第三方平台没有关联&#xff0c;营销…

【控制篇 / 策略】(7.4) ❀ 01. IP地理位置数据库和地理址对象 ❀ FortiGate 防火墙

【简介】在很多使用环境下&#xff0c;我们需要对指定国家的IP地址进行允许或禁止访问操作&#xff0c;例如只允许访问国内IP、禁止访问美国IP等。在早期的配置中&#xff0c;只能手动添加IP地址对象到地址组&#xff0c;繁杂及效率低下&#xff0c;Fortinet提供了基于地理的IP…

oh-my-zsh nvm command not found

如果你在使用 oh-my-zsh 并且在终端输入 nvm 命令时提示 "command not found"&#xff0c;这可能是因为 oh-my-zsh 没有配置 nvm 插件导致的。 a、确保你已经在系统中安装了 nvm。如果没有安装&#xff0c;请参考 nvm 的文档安装。 b、打开 oh-my-zsh 的配置文件&a…

特朗普又搞事情了?这次他把矛头对准了林肯!

美国内战那段血腥历史被他翻了出来&#xff0c;争议四起。2024美国大选之年&#xff0c;两党有力竞选者接连发声&#xff0c;这可真是热闹了。据CNN报道&#xff0c;特朗普在艾奥瓦州举行的竞选集会上说&#xff0c;美国内战“本可以通过谈判”避免&#xff0c;林肯应该采取更多…

通过使用别名让 SQL 更简短-数据库教程shulanxt.com-帆软软件有限公司

MySQL视频教程导航 https://www.shulanxt.com/database/mysqlvideo/p1 SQL 别名 SQL 别名 通过使用 SQL&#xff0c;可以为表名称或列名称指定别名。 基本上&#xff0c;创建别名是为了让列名称的可读性更强。 列的 SQL 别名语法 SELECT column_name AS alias_name FROM …

DevOps搭建(十五)-kubernetes部署项目详细步骤

1、k8s简介 k8s官网地址 https://kubernetes.io/zh-cn/docs/home/ 2、安装kuboard 详细步骤可参考官网 https://kuboard.cn/install/install-k8s.html 2.1、环境准备 至少 2 台 2核4G 的服务器。 选择v1.19&#xff0c;因为高版本的已经把docker给舍弃掉了。 https://k…

selenium如何使用隧道代理请求目标地址?

使用Selenium结合隧道代理IP可以通过以下步骤实现&#xff1a; 获取代理IP&#xff1a; 首先&#xff0c;你需要获得一个可用的隧道代理IP。你可以使用代理服务提供商&#xff08;巨量IP平台提供免费隧道代理测试&#xff09; 安装Selenium&#xff1a; 如果你还没有安装Selen…

redis报错:Creating Server TCP listening socket 127.0.0.1:6379: bind: No error

Redis启动时报错&#xff1a; Creating Server TCP listening socket 127.0.0.1:6379: bind: No error 这个错误说明已经开启了redis&#xff0c;并且已经占用了端口6379&#xff0c;需要停止redis后再开启。 redis-cli.exeshutdownexitredis-server redis.windows.conf 参考…

BurpSuite信息收集篇

BurpSuite信息收集篇 1.填充目标站点地图2.使用 Burp Suite 自动发现内容3.使用 Burp Suite 枚举子域1.填充目标站点地图 演示站点 ginandjuice.shop 1、抓取目标的请求包 2、在不关闭浏览器的情况下,转到目标>站点地图。请注意,已自动添加一个节点来表示目标域 3、右键…

react-native生命周期函数

生命周期函数 实例化阶段&#xff08;图中上框部分&#xff09;&#xff0c;存在阶段&#xff08;图中左框部分&#xff09;&#xff0c;销毁阶段&#xff08;图中右框部分&#xff09; 实例化阶段 开发中&#xff0c;常用的就是实例化阶段&#xff0c;因为该阶段是组件的构建&…

不同像平面坐标系下的Brown畸变系数互转

不同像平面坐标系下Brown畸变系数转换 记 u , v u,v u,v为像素为单位的坐标&#xff0c;f为焦距&#xff0c;单位也是像素。 记 x , y x,y x,y为理想坐标。本文推导两种情况下的Brown畸变系数转换关系&#xff1a; 相同坐标系定义、不同的坐标单位&#xff08;像素坐标与归一…