kettle的基本介绍和使用

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.mzph.cn/news/605344.shtml

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

相关文章

【数据结构】树的遍历

树的遍历 前序遍历 前序遍历是按照根节点->左子树->右子树的顺序进行遍历 图片来源维基百科深度优先遍历&#xff08;前序遍历&#xff09;: F, B, A, D, C, E, G, I, H. 代码实现 递归 # class TreeNode: # def __init__(self, x): # self.val x # …

Office提示内存或磁盘空间不足

Office提示内存或磁盘空间不足 Office提示内存或磁盘空间不足&#xff0c;可以试试以下方法&#xff0c;不管用不要骂我 打开选项 点击信任中心 在受保护的视图中将以下选项取消勾选后确定&#xff0c;关掉软件重新打开

服务容错-熔断策略之断路器hystrix-go

文章目录 概要一、服务熔断二、断路器模式三、hystrix-go3.1、使用3.2、源码 四、参考 概要 微服务先行者Martin Fowler与James Lewis在文章microservices中指出了微服务的九大特征&#xff0c;其中一个便是容错性设计(Design for failure)。正如文章中提到的&#xff0c;微服…

Python打印Python环境、PyTorch和CUDA版本、GPU数量名称等信息

代码&#xff1a; import torch import platformgpu_num torch.cuda.device_count() torch_version torch.__version__ python_version platform.python_version()print("Python Version: Python %s" % python_version) print("PyTorch Version: %s" %…

Spring之推断构造方法源码

文章目录 一、 简介1. 内容回顾2. Spring推断构造方法 二、 源码分析 一、 简介 1. 内容回顾 前面分析了Spring的Bean的生命周期的源码&#xff0c;然后分析了依赖注入源码&#xff0c;以及依赖注入的过程中循环依赖Spring的解决方案。在介绍Bean的生命周期中&#xff0c;我们…

三维模型的几何坐标纠正应用探讨

三维模型的几何坐标纠正应用探讨 倾斜摄影三维模型数据的几何坐标纠正应用分析 近年来&#xff0c;倾斜摄影技术在三维数据采集设备中得到广泛应用。倾斜摄影技术通过在飞行平台上搭载多台传感器&#xff0c;从不同角度采集影像&#xff0c;相比传统的摄影测量&#xff0c;倾斜…

每日算法打卡:数的三次方根 day 7

文章目录 原题链接题目描述输入格式输出格式数据范围输入样例&#xff1a;输出样例&#xff1a; 题目分析示例代码 原题链接 790. 数的三次方根 题目难度&#xff1a;简单 题目描述 给定一个浮点数 n&#xff0c;求它的三次方根。 输入格式 共一行&#xff0c;包含一个浮…

第17课 为rtsp流加入移动检测功能

在上节课&#xff0c;我们成功拿到了rtsp视频和音频流&#xff0c;在第13课&#xff0c;我们为普通的usb摄像头加上了移动检测功能&#xff0c;那能不能给rtsp摄像头也加上移动检测功能以实现一些好玩的应用呢&#xff1f;答案是肯定的&#xff0c;在usb摄像头检测中&#xff0…

vue结合Cesium加载gltf模型

Cesium支持什么格式&#xff1f; Cesium支持的格式包括&#xff1a;3D模型格式&#xff08;如COLLADA、gITF、OBJ&#xff09;、影像格式&#xff08;如JPEG、PNG、GeoTIFF&#xff09;、地形格式&#xff08;如STL、Heightmap&#xff09;、矢量数据格式&#xff08;如GeoJSON…

初识Linux shell

Linux初探 Linux系统可以划分为4个部分&#xff1a; Linux内核&#xff1a;Linux系统的核心&#xff0c;控制着系统的所有硬件和软件&#xff0c;在必要时分配硬件&#xff0c;并根据需要执行软件。 内核主要功能&#xff1a; 系统内存管理&#xff1a;内核通过硬件上称为交换…

labelImg的安装与使用

目录 1、查看本机是否安装labelImg 2、安装labelImg 3、创建自己的数据集 3.1 建立新文件夹 3.2 打开labelImg 注意&#xff1a;出现闪退的情况处理。 4、文件格式转换 4.1 修改文件夹路径 4.2 新建datasets文件夹 4.3 修改图片路径 4.4 执行 1、查看本机是否安装la…

【Origin绘图1】环形图

环形图绘制 Origin绘制环形图案例 MATLAB绘制环形饼状图案例 参考 环形图如下&#xff0c;可分析不同年份各组分变化情况&#xff1a; Origin绘制环形图 貌似对Origin版本有要求&#xff0c;下载的2019版并无环形图绘制工具。因此&#xff0c;重新下载了2022版本。 案例 第…

Python 利用PYQT5设计基于RSA算法盲签名的匿名化电子支付系统设计与实现

基于RSA算法的盲签名算法 David Chaum 于1982年提出盲签名的概念&#xff0c;并利用RSA算法设计了第一个盲签名方案. 该方案的安全性基于大整数分解问题 盲签名的步骤 1.密钥生成 签名者执行以下步骤生成密钥对: ①签名者选择两个大素数p,q&#xff0c; 计算npq&#xff0…

【OpenVINO 】在 MacOS 上编译 OpenVINO C++ 项目

前言 英特尔公司发行的模型部署工具OpenVINO™模型部署套件&#xff0c;可以实现在不同系统环境下运行&#xff0c;且发布的OpenVINO™ 2023最新版目前已经支持MacOS系统并同时支持在苹果M系列芯片上部署模型。在该项目中&#xff0c;我们将向大家展示如何在MacOS系统、M2芯片的…

鸿鹄电子招投标系统源码实现与立项流程:基于Spring Boot、Mybatis、Redis和Layui的企业电子招采平台

随着企业的快速发展&#xff0c;招采管理逐渐成为企业运营中的重要环节。为了满足公司对内部招采管理提升的要求&#xff0c;建立一个公平、公开、公正的采购环境至关重要。在这个背景下&#xff0c;我们开发了一款电子招标采购软件&#xff0c;以最大限度地控制采购成本&#…

NFS 共享存储实验

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

神经网络的核心:简单易懂理解 PyTorch 非线性激活函数

目录 torch.nn子函数非线性激活详解 nn.Softmin Softmin 函数简介 函数工作原理 参数详解 使用技巧与注意事项 示例代码 nn.Softmax Softmax 函数简介 函数工作原理 参数详解 使用技巧与注意事项 示例代码 nn.Softmax2d Softmax2d 函数简介 函数工作原理 输入…

2024最新前端源码分享(附效果图及在线演示)

分享10款非常有趣的前端特效源码 其中包含css动画特效、js原生特效、svg特效以及小游戏等 下面我会给出特效样式图或演示效果图 但你也可以点击在线预览查看源码的最终展示效果及下载源码资源 粒子文字动画特效 基于canvas实现的粒子文字动画特效 会来回切换设定的文字特效 图…

在版权付费方面,OpenAI 比人想象中的还要「小气」

随着新闻出版商与AI公司达成“使用新闻训练AI模型”的协议&#xff0c;像 OpenAI 等科技企业愿意为受版权保护的信息支付的价格逐渐浮出水面。 据 The Information 报道&#xff0c;OpenAI 每年愿意向出版商提供 100万到500万美元来支付受版权保护的新闻文章训练其AI模型。 但…

【leetcode】力扣热门之合并两个有序列表【简单难度】

题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 用例 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 输入&#xff1a;l1 [], l2 [] 输出&#xff1a;[] 输入&#xff1a;l1 []…