Kettle的安装及简单使用

news2024/9/23 9:34:14

Kettle的安装及简单使用一、kettle概述二、kettle安装部署和使用Windows下安装案例1:MySQL to MySQL案例2:使用作业执行上述转换,并且额外在表stu2中添加一条数据案例3:将hive表的数据输出到hdfs案例4:读取hdfs文件并将sal大于1000的数据保存到hbase中三、创建资源库1、数据库资源库2、文件资源库四、 Linux下安装使用1、单机2、 集群模式案例:读取hive中的emp表,根据id进行排序,并将结果输出到hdfs上五、调优

一、kettle概述

1、什么是kettle

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

2、Kettle工程存储方式

(1)以XML形式存储

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

3、Kettle的两种设计

image.png

4、Kettle的组成

image.png

5、kettle特点

image.png


二、kettle安装部署和使用

Windows下安装

(1)概述

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

(2)安装步骤

1、安装jdk
​
2、下载kettle压缩包,因kettle为绿色软件,解压缩到任意本地路径即可
​
3、双击Spoon.bat,启动图形化界面工具,就可以直接使用了
案例1:MySQL to MySQL

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

1、在mysql中创建testkettle数据库,并创建两张表

create database testkettle;
​
use testkettle;
​
create table stu1(id int,name varchar(20),age int);
​
create table stu2(id int,name varchar(20));

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

insert into stu1 values(1001,'zhangsan',20),(1002,'lisi',18), (1003,'wangwu',23);
​
insert into stu2 values(1001,'wukong');

3、把pdi-ce-8.2.0.0-342.zip文件拷贝到win环境中指定文件目录,解压后双击Spoon.bat,启动图形化界面工具,就可以使用了

image.png

主界面:

image.png

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

image.png

在data-integration\lib文件下添加mysql驱动

image.png

在数据库连接栏目点击新建,填入mysql相关配置,并测试连接

image.png

建立连接后,选择刚刚建好的连接,填入SQL,并预览数据:

image.png

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

image.png

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

image.png

转换之前,需要做保存

image.png

执行成功之后,可以在mysql查看,stu2的数据

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

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

1、新建一个作业

image.png

2、按图示拉取组件

image.png

3、双击Start编辑Start

image.png

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

image.png

5、在mysql的stu1中插入一条数据,并将stu2中id=1001的name改为wukong

mysql> insert into stu1 values(1004,'stu1',22);
Query OK, 1 row affected (0.01 sec)
​
mysql> update stu2 set name = 'wukong' where id = 1001;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
​

6、双击SQL脚本编辑

image.png

7、加上Dummy,如图所示:

image.png

8、保存并执行

image.png

9、在mysql数据库查看stu2表的数据

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

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

image.png

2、启动hadoop集群、hiveserver2服务

3、进入hive shell,创建kettle数据库,并创建dept、emp表

create database kettle;
​
use kettle;
​
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';

4、插入数据

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);

5、按下图建立流程图

image.png

  • 表输入

image.png

  • 表输入2

image.png

  • 排序记录

image.png

  • 记录集连接

image.png

  • 字段选择

image.png

image.png

  • 文本文件输出

image.png

image.png

6、保存并运行查看hdfs

  • 运行

image.png

  • 查看HDFS文件

image-20210129215501794.png


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

1、在HBase中创建一张people表

hbase(main):004:0> create 'people','info'

2、按下图建立流程图

image.png

  • 文本文件输入

image.png

image.png

  • 设置过滤记录

image.png

  • 设置HBase output

    编辑hadoop连接,并配置zookeeper地址

image.png

image.png

  • 执行转换

image.png

  • 查看hbase people表的数据

    scan 'people'

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

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


三、创建资源库

1、数据库资源库

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

  • 在MySQL中创建kettle数据库

    mysql> create database kettle;
    Query OK, 1 row affected (0.01 sec)
  • 点击右上角connect,选择Other Resporitory

image.png

  • 选择Database Repository

image.png

  • 建立新连接

image.png

image.png

image.png

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

image.png

  • 连接资源库

    默认账号密码为admin

image.png

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

    • 选择从xml文件导入

      image.png

    • 点击保存,选择存储位置及文件名

    image.png

    • 查看MySQL中kettle库中的R_TRANSFORMATION表,观察转换是否保存

      image.png

2、文件资源库

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

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

平台使用比较麻烦

  • 选择connect

  • 点击add后点击Other Repositories

  • 选择File Repository

  • 填写信息

image.png


四、 Linux下安装使用

1、单机
  • jdk安装

  • 安装包上传到服务器,并解压

    注意:

    1. 把mysql驱动拷贝到lib目录下

    2. 将windows本地用户家目录下的隐藏目录C:\Users\自己用户名\.kettle 目录,

      整个上传到linux的用户的家目录下,root用户的家目录为/root/

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

    cd /usr/local/soft/data-integration
    ./pan.sh -rep=my_repo -user=admin -pass=admin -trans=trans1

    参数说明:

    -rep 资源库名称

    -user 资源库用户名

    -pass 资源库密码

    -trans 要启动的转换名称

    -dir 目录(不要忘了前缀 /)(如果是以ktr文件运行时,需要指定ktr文件的路径)

image.png

  • 运行资源库里的作业:

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

    记得把作业也变成资源库中的资源

    cd /usr/local/soft/data-integration
    mkdir logs
    ./kitchen.sh -rep=my_repo -user=admin -pass=admin -job=job1 -logfile=./logs/log.txt

    参数说明: -rep - 资源库名 -user - 资源库用户名 -pass – 资源库密码 -job – job名 -dir – job路径(当直接运行kjb文件的时候需要指定) -logfile – 日志目录

    image.png

2、 集群模式
  • 准备三台服务器

    master作为Kettle主服务器,服务器端口号为8080,

    node1和node2作为两个子服务器,端口号分别为8081和8082。

  • 安装部署jdk

  • hadoop完全分布式环境搭建

  • 上传并解压kettle的安装包至/usr/local/soft/目录下

  • 进到/usr/local/soft/data-integration/pwd目录,修改配置文件

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

      <slaveserver>
          <name>master</name>
          <hostname>master</hostname>
          <port>8080</port>
          <master>Y</master>
          <username>cluster</username>
          <password>cluster</password>
      </slaveserver>
    • 修改从服务器配置文件carte-config-8081.xml

      <masters>
          <slaveserver>
            <name>master</name>
            <hostname>master</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>node1</hostname>
          <port>8081</port>
          <username>cluster</username>
          <password>cluster</password>
          <master>N</master>
      </slaveserver>
    • 修改从配置文件carte-config-8082.xml

      <masters>
          <slaveserver>
            <name>master</name>
            <hostname>master</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>node2</hostname>
          <port>8082</port>
          <username>cluster</username>
          <password>cluster</password>
          <master>N</master>
      </slaveserver>
  • 分发整个kettle的安装目录,通过scp命令

  • 分发/root/.kettle目录到node1、node2

  • 启动相关进程,在master,node1,node2上分别执行

[root@master]# ./carte.sh master 8080
[root@node1]# ./carte.sh node1 8081
[root@node2]# ./carte.sh node2 8082
  • 访问web页面

http://master:8080


案例:读取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下

image.png

  • 创建转换,编辑步骤,填好相关配置

    直接使用trans1

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

image.png

image.png

image.png

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

    image.png

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

    image.png

  • 创建Run Configuration,选择集群模式

    image.png

  • 直接运行,选择集群模式运行


五、调优

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

img

参数参考:

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

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

相关文章

Jboss常⻅中间件漏洞

一.CVE-2015-7501 环境搭建 cd vulhub-master/jboss/JMXInvokerServlet-deserialization docker-compose up -d 1.POC&#xff0c;访问地址 172.16.1.4:8080/invoker/JMXInvokerServlet 返回如下&#xff0c;说明接⼝开放&#xff0c;此接⼝存在反序列化漏洞 2.下载 ysose…

7.C++程序中的基本数据类型-数据类型之间的转换

在C中&#xff0c;类型转换是将一个数据类型转为另外一个数据类型&#xff0c;其转换过程比较复杂&#xff0c;目前只讨论基本数据类型之间的转换。 类型转换分为两部分&#xff1a;隐式转换和显示转换 隐式转换又称为自动转换&#xff0c;显示转换又称为强制转换。 隐式转换…

[Linux] Linux进程PCB内部信息的深入理解

标题&#xff1a;[Linux] Linux进程PCB内部信息的深入理解 个人主页&#xff1a;水墨不写bug &#xff08;图片来自网络&#xff09; 目录 一.查看进程 二.认识并了解进程的关键信息 I&#xff0c;PID/PPID II&#xff0c;exe III&#xff0c;cwd 三、fork&#xff08;&…

vue源码分析(九)—— 合并配置

文章目录 前言1.vue cli 创建一个基本的vue2 项目2.将mian.js文件改成如下3. 运行结果及其疑问&#xff1f; 一、使用 new Vue 创建过程的 2 种场景二、margeOption的详细说明1.margeOption的方法地址2.合并策略的具体使用3.defaultStrat 默认策略方法 三&#xff1a;以生命周期…

OpenResty安装及使用

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

调用本地大模型服务出现PermissionDeniedError的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【机器学习】---神经架构搜索(NAS)

这里写目录标题 引言1. 什么是神经架构搜索&#xff08;NAS&#xff09;1.1 为什么需要NAS&#xff1f; 2. NAS的三大组件2.1 搜索空间搜索空间设计的考虑因素&#xff1a; 2.2 搜索策略2.3 性能估计 3. NAS的主要方法3.1 基于强化学习的NAS3.2 基于进化算法的NAS3.3 基于梯度的…

ICM20948 DMP代码详解(38)

接前一篇文章&#xff1a;ICM20948 DMP代码详解&#xff08;37&#xff09; 上一回继续解析inv_icm20948_set_slave_compass_id函数&#xff0c;解析了第3段代码&#xff0c;本回解析接下来的代码。为了便于理解和回顾&#xff0c;再次贴出该函数源码&#xff0c;在EMD-Core\so…

队列+宽搜专题篇

目录 N叉树的层序遍历 二叉树的锯齿形层序遍历 二叉树最大宽度 在每个树行中找最大值 N叉树的层序遍历 题目 思路 使用队列层序遍历来解决这道题&#xff0c;首先判断根节点是否为空&#xff0c;为空则返回空的二维数组&#xff1b;否则&#xff0c;就进行层序遍历&#x…

chapter 12 Bandgap References

chapter 12 Bandgap References 这一章我们介绍电压和电流基准. 首先学习和输入电压无关的偏置和起动问题. 然后介绍和温度有关的基准电压, 考虑offset对输出电压的影响. 最后学习恒定gm偏置和state-of-the-art电压基准. 12.1 General Considerations 一般基准电流有三种形式…

鸿蒙OpenHarmony【轻量系统芯片移植案例】标准系统方案之瑞芯微RK3566移植案例

标准系统方案之瑞芯微RK3566移植案例 本文章是基于瑞芯微RK3566芯片的khdvk_3566b开发板&#xff0c;进行标准系统相关功能的移植&#xff0c;主要包括产品配置添加&#xff0c;内核启动、升级&#xff0c;音频ADM化&#xff0c;Camera&#xff0c;TP&#xff0c;LCD&#xff…

数据集-目标检测系列-摩托车检测数据集 motorcycle >> DataBall

数据集-目标检测系列-摩托车检测数据集 motorcycle >> DataBall 数据集-目标检测系列-摩托车&#xff08;motorcycle&#xff09;检测数据集 数据量&#xff1a;1W 想要进一步了解&#xff0c;请联系 DataBall。 DataBall 助力快速掌握数据集的信息和使用方式&#xf…

AI 智能名片链动 2+1 模式商城小程序中的体验策略

摘要&#xff1a;本文探讨了在 AI 智能名片链动 21 模式商城小程序中&#xff0c;体验策略如何服务于用户体验&#xff0c;以及与产品策略的区别。重点分析了该小程序如何通过关注用户在使用过程中的流畅度、视觉体感等方面&#xff0c;实现“让用户用得爽”的目标&#xff0c;…

MWD天气图像多分类数据集,用于图像分类总共6个类别,多云,下雨,下雪,雾天,正常天气,共60000张图像数据

MWD天气图像多分类数据集&#xff0c;用于图像分类 总共6个类别&#xff0c;多云&#xff0c;下雨&#xff0c;下雪&#xff0c;雾天&#xff0c;正常天气&#xff0c;共60000张图像数据 MWD天气图像多分类数据集 (Multi-Weather Dataset, MWD) 数据集描述 MWD天气图像多分类…

哔哩哔哩自动批量删除抽奖动态解析篇(三)

前面两节已经介绍了如何获取抽奖动态列表和根据动态id_str索引值判断是否开奖了&#xff0c;接下来我们要完成的就是删除已经开奖了的动态 一、删除已经开奖的抽奖动态 老规矩&#xff0c;我们按F12健进入网页源代码&#xff0c;删除一条动态&#xff0c;观察网络接口 这次…

论文阅读 | 可证安全隐写(网络空间安全科学学报 2023)

可证安全隐写&#xff1a;理论、应用与展望 一、什么是可证安全隐写&#xff1f; 对于经验安全的隐写算法&#xff0c;即使其算法设计得相当周密&#xff0c;隐写分析者&#xff08;攻击者&#xff09;在观察了足够数量的载密&#xff08;含有隐写信息的数据&#xff09;和载体…

Redis数据结构之list列表

一.list列表 列表相当于数组或者顺序表 它里面的元素是有序的&#xff0c;也就是可以通过下标进行访问。这里的有序的含义是要根据上下文区分的&#xff0c;有的时候&#xff0c;有序指的是升序/降序&#xff0c;有的时候有序指的是顺序很关键&#xff0c;俩个元素交换后就不…

Spring6梳理10—— 依赖注入之注入数组类型属性

以上笔记来源&#xff1a; 尚硅谷Spring零基础入门到进阶&#xff0c;一套搞定spring6全套视频教程&#xff08;源码级讲解&#xff09;https://www.bilibili.com/video/BV1kR4y1b7Qc 目录 10 依赖注入之注入数组类型属性 10.1 创建Emp实体类&#xff0c;Dept实体类 10.2…

Java 每日一刊(第15期):内部类

文章目录 前言内部类成员内部类&#xff08;Member Inner Class&#xff09;静态内部类&#xff08;Static Nested Class&#xff09;局部内部类&#xff08;Local Inner Class&#xff09;匿名内部类&#xff08;Anonymous Inner Class&#xff09; 内部类的详细对比内部类字节…

浅谈Spring Cloud:Nacos的配置

Nacos&#xff0c;一个更易于构建云原生应用的动态服务发现&#xff0c;配置管理和服务管理平台。所以Nacos是⼀个注册中心组件&#xff0c;但它又不仅仅是注册中心组件。 目录 安装 注册 负载均衡 环境隔离 配置管理 搭建集群 安装 在官网下载好安装包解压后&#xf…