kettle入门教程

一、概述

1.什么是kettle

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

image-20230312122610549

2.kettle工程存储方式

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

3.kettle两种设计

  • Transformation(转换):完成对数据的基本转换
  • Job(工作):完成整个工作流的控制

区别:

(1)作业(Job)是步骤流,转换(Transformation)是数据流。

(2)作业的每一个步骤必须要等到前面的步骤都跑完了,后面的步骤才会执行,而转换会一次性把所有控件全部先启动(一个控件对应启动一个线程),然后数据流会从第一个控件开始,一条记录一条记录的流向最后控件。

4.kettle的组成

  • **勺子(Spoon.bat/spoon.sh) 😗*是-个图形化的界面,可以让我们用图形化的方式开发转换和作业。windows选择.bat; Linux选择.sh。
  • 煎锅(Pan.bat/pan.sh) : 利用Pan可以用命令行的形式调用Trans。
  • 厨房(Kitchen batkitchen.sh) : 利用Kitchen可以使用命令行调用Job
  • 菜单(Carte.bat/ Carte.sh): Carte是一 个轻量级的Web容器,用于建立专用、远程的ETL Server。

5.kettle核心概念

5.1.可视化编程

  • kettle可以被归类为可视化编程语言,因为kettle可以使用图形化的方式定义复杂的ETL程序和工作流
  • kettle里的代码就是转换和作业

5.2.转换

  • 转换负责数据的输入、转换、校验和输出的工作.
  • kettle中使用转换完成数据ETL全部工作.
  • 转换由多个步骤组成.
  • 各个步骤使用跳(Hop)来链接,跳定义了一个数据流通道,即数据由一个步骤流(跳)向下一个步骤,在kettle中数据的最小单元是数据行,数据流中流动其实是缓存的行集(RowSet).

5.3步骤

​ 步骤(控件)是转换里的基本的组成部分.

  1. 步骤需要有一个名字,这个名字在同一个转换范围内唯一.
  2. 每个步骤都会读、写数据行(唯一例外是生成记录步骤,该步骤只写数据).
  3. 步骤将数据写到与之相连的一个或多个输出跳(Hop),再传送到跳的另外一端的步骤.
  4. 大多数的步骤都可以有多个输出跳.一个步骤的数据发送可以被设置为分发和复制.分发是目标步骤轮流接收记录,复制是所有的记录被同时发送到所有的目标步骤.

image-20231018211715453

5.4.跳(Hop)

跳就是步骤之间带箭头的连线,跳定义了步骤之间的数据通道

image-20231018212032496

跳实际上是两个步骤之间的被称为行集的数据行缓存,行集的大小可以在转换的设置里定义.当行集满了,向行集写数据的步骤将停止写入,直到行集里又有了空间.当行集空了,从行集读取数据的步骤停止读取,直到行集又有可读的数据行.

image-20231018212454505

5.5.元数据

每个步骤在输出数据行时都有对字段的描述,这种描述就是数据行的元数据.

  1. 名称:数据行里的字段名是唯一的.
  2. 数据类型:字段的数据类型.
  3. 格式:数据显示的方式.
  4. 长度:字符串的长度或者BigNumber类型的长度.
  5. 精度:BigNumber数据类型的十进制精度
  6. 货币符号:¥
  7. 小数点符号:十进制数据的小数点格式.
  8. 分组符号:数值类型数据的分组符号,
image-20231019105001047

5.6数据类型

数据以数据行的形式沿着步骤移动.一个数据行是零到多个字段的集合.字段包含下面几种数据类型.

  1. String:字符类型数据
  2. Number:双精度浮点数
  3. Integer:带符号长整形(64位)
  4. BigNumber:任意精度数据
  5. Date:带毫秒精度的日期时间值.
  6. Boolean:取值为true和false的布尔值.
  7. Binary:二进制字段可以包含图像、声音、视频以及其他类型的二进制数据.

5.7.并行

跳的这种基于行集缓存的规则允许每个步骤都是由一个独立的线程运行,这样并发程度最高.

5.8.作业(Job)

负责定义一个完成整个工作流的控制,比如转换的结果发送邮件给相关人员.因为转换以并行方式执行,所以必须存在一个串行的调度工具来执行转换.这就是kettle中的作业.

6.kettle的组建

6.1.kettle输入控件

输入是转换里面的第一分类,输入控件也是转换中的第一大控件,用来抽取数据或者生成数据.输入是ETL里面的E,主要做数据抽取的工作.

6.1.1.CSV文件输入
6.1.2.文本输入
6.1.3.Excel输入
6.1.4.Xml输入
6.1.5.JSON输入
6.1.6.Data Grid

Data Grid组件允许用户以网格形式输入静态的数据行,这主要是为了测试、参考或演示目的.这些数据行可以来自多种来源,例如数据库表或文本文件。在创建复杂的转换流程时,Data Grid组件提供了一种直观的方式来设置和调整参数。此外,它还支持各种操作,如添加、删除和编辑数据行,以满足不同的数据处理需求。

image-20231022162427839

6.2.kettle输出控件

image-20231022120546436
6.2.1.Excel输出
6.2.2.文本文件输出
6.2.3.SQL文件输出
image-20231022114951421

6.2.4.表输出

  • 更新(需要更新emp1表,必须保证两张表的数据行数相同,根据id作比较进行更新)

    image-20231022115340717
  • 插入/更新(需要更新emp1表,两张表的数据行数可以不相同,更新字段添加id,把Y改成N)

image-20231022115502666

6.3.转换控件

6.3.1.Concat filelds

name就是拼接后新增的字段,下面获取得两个字段就是需要拼接的字段

image-20231022120746116
6.3.2.值映射
image-20231022121327390
6.3.3添加常量&增加序列
image-20231022121424603

字段选择是从数据流中选择字段,改变名称,修改数据类型
选择和修改:可以随意修改字段名称,长度
移除:只保留想要删除的字段
元数据:随意修改数据类型等

6.3.4.计算器
image-20231022122843245
6.3.5.字符串剪切&替换&操作
image-20231022124135373
6.3.6.排序记录

用于表连接时只保留重复的记录字段,意思是根据这个字段进行排序或连接,类似于两表之间得关联字段id
类似于根据id主键进行升序降序

6.3.7.拆分字段

image-20231022150950910

注意:根据空格拆分,拆分字段之后源字段name就失效了,取而代之得是firstname,lastname

6.3.8.拆分为多行

image-20231022151113256

6.3.9.行扁平化

把同一组数据得多行数据合并为一行,理解为:拆分多行得逆向操作
【注意】使用之前需要对数据进行排序
每个分组的数据条数要保证一致,否则会有错乱

image-20231022151201327

注意:拆分出来3列了,如果想要把3列合并为一列,需要使用Conncat filelds拼接控件

6.3.10.列转行
image-20231022151529382
  • 关键字段:从数据内容变成列名的字段
  • 分组字段:列转行,转变以后的分组字段
  • 目标字段:增加的列的列名字段
  • 数据字段:目标字段的数据字段
  • 关键值字段:数据字段查询时的关键字段,也可以理解为key; 相当于源数据字段的值
image-20231022151425225

注意】列转行之前数据流必须按照分组字段进行排序,否则数据会错乱

6.3.11.行转列
image-20231022151657552
  • Key字段:行转列,生成的列名字段
  • 字段名称:原本数据流中的字段名
  • Key值:Key字段的值,跟前面的字段名称一样
  • Value字段:对应的Key值的数据列的列名
image-20231022151633318

6.4.应用控件

6.4.1.替换null值
image-20231022152117796 image-20231022152139532
6.4.2.写日志

调试的时候使用,可以将数据流的每行数据打印到控制台,方便我们调试整个程序
1.选择日志级别
2.可以输入自定义输出的语句
3.选择要输出打印的字段

image-20231022152321889

6.5.流程控件

6.5.1.Switch/case

image-20231022152934590

6.5.2.过滤记录

过滤记录和Switch/case做对比的话,过滤记录相当于if-else,可以自定义输入一个判断条件,然后将数据流中的数据一路分为两路。

image-20231022153114177
6.5.3.空操作

空操作,什么也不做,此控件一般作为数据流的终点

image-20231022153209710
6.5.4.中止

中止是数据流的终点,如果有数据流到此处,整个转换程序将中止,并且在控制台输出报错信息。此控件一般用来校验数据或者调试程序。

image-20231022153332283 image-20231022153405016
6.5.5.Transformation Executor(转换执行器)

主要功能是执行子转换。当子转换需要配合使用的时候,例如从结果获取记录和复制记录到结果这两个步骤,Transformation Executor就会被调用。同时,它还可以用于实现ETL操作中的循环调用,通过设置Transformation的高级属性(“执行每一个输入行”)来实现。

需要注意的是,作业和转换是Kettle中的两种主要控件类型。作业是步骤流,每一个步骤必须等到前面的步骤都跑完,后面的步骤才会执行;而转换则是数据流,会一次性把所有控件全部先启动(一个控件对应启动一个线程),然后数据流会从第一个控件开始,一条记录、一条记录地流向最后的控件。因此,Transformation Executor的使用对于实现ETL过程中的数据流处理至关重要.

image-20231022163833143

6.6.查询控件

6.6.1.数据库查询

一般用于左连接,表输入是左表

image-20231022153558217
6.6.2.流查询
image-20231022153657996 image-20231022153732184

6.7.连接控件

6.7.1.合并记录

用于将两个不同来源的数据合并,这两个来源数据分别为旧数据和新数据,将旧数据和新数据按照指定的关键字匹配,比较,合并。

image-20231022153915769

6.7.2.记录集连接

对两个步骤中的数据进行左连接,右连接,内连接,外连接;使用此控件之前需要对记录集的数据进行排序,排序的字段一定是两个表关联的字段,否则数据错乱,出现null值

6.8.统计控件

6.8.1.分组

类似于group by,按照一个或几个分组之后其余字段可以按照聚合函数进行合并计算

image-20231022154220923

注意:在进行分组之前,数据最好先进行排序(按照分组的字段排序)

image-20231022154245111

6.9.映射控件

6.9.1.映射
image-20231022154421520

6.10.脚本控件(scripting).

6.10.1.执行SQL脚本
image-20231022154527726
6.10.2.用户定义的java类

6.11.Tranform(转换控件)

6.11.1.Select/Rename values

对input的值进行筛选,重命名等操作

image-20231022160424636

image-20231022161643036

6.11.2.增加常量(Add constants)

主要是添加常量到流中

image-20231022161959256

6.12.Job(任务)

6.12.1.Get rows form result

获取上游步骤生成的结果集数据。这些数据可以来自不同的源头,例如数据库查询、文本文件等。你可以指定要获取的元数据字段。需要注意的是,这个组件一次只能获取一组记录,而不能获取单个记录。如果需要对结果集中的每一行数据进行操作,可以使用循环或者复制多行到结果步骤。此外,根据获取的数据,可以通过设置变量的方式来实现数据的传递和处理。

image-20231022163314648

6.13.普通组建

6.13.1.start(开始组建)

,Start组件的主要功能是设置作业的执行方式和时间。它可以配置作业为手动执行或定时执行。当设置为定时执行时,可以指定作业的执行频率,例如每天、每周或每月执行一次。此外,Start组件还可以设置作业并行执行的数量,以及选择作业中各个步骤的执行顺序。

这种定时执行任务的功能在实际工作中非常有用,尤其是在需要定期获取、处理数据的情况下。例如,你可以设置每天晚上12点自动从数据库中抽取新的销售数据,然后对这些数据进行清洗和转换,以便第二天早上进行分析。这样不仅可以节省人力资源,也可以确保数据的及时性和准确性。

image-20231022164233302

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python实现学生信息管理系统(详解版)

Python实现学生信息管理系统-详解版 个人简介实验名称:学生信息管理系统系统功能实验步骤详讲添加入住学生信息删除学生的住宿信息修改学生的住宿信息查询学生的住宿信息显示所有学生住宿信息显示所有请假学生的信息 运行截图展示1.主界面2.添加新的入住学生信息3.显…

VUE本地idea启动

安装yarn(也可以用npm) 问题:yarn : 无法加载文件 C:\Users\xx/yarn.ps1,因为在此系统上禁止运行脚本 解决办法:管理员身份运行【 PowerShell】,然后执行【Set-ExecutionPolicy RemoteSigned】&#xff0c…

SHAP(一):具有 Shapley 值的可解释 AI 简介

SHAP(一):具有 Shapley 值的可解释 AI 简介 这是用 Shapley 值解释机器学习模型的介绍。 沙普利值是合作博弈论中广泛使用的方法,具有理想的特性。 本教程旨在帮助您深入了解如何计算和解释基于 Shapley 的机器学习模型解释。 我…

从零开始的c语言日记day39——指针进阶-函数指针

复习上节内容 什么是指针数组什么是数组指针 取地址函数名和函数名都是打印函数地址 Pf指向的参数和函数的参数类型要一至。三种写法都可以实现调用 练习:如何解释图中代码作用 首先看(void(*)()&#xff…

FPGA程序执行相关知识点

1.目前,大多数FPGA芯片是基于 SRAM 的结构的, 而 SRAM 单元中的数据掉电就会丢失,因此系统上电后,必须要由配置电路将正确的配置数据加载到 SRAM 中,此后 FPGA 才能够正常的运行。 常见的配置芯片有EPCS 芯片 &#x…

Java微服务框架 HP-SOA 1.0.5 — 完整支持 Spring Cloud 和 Dubbo

HP-SOA 功能完备,简单易用,高度可扩展的Java微服务框架。 项目主页 : https://www.oschina.net/p/hp-soa下载地址 : https://github.com/ldcsaa/hp-soa开发文档 : https://gitee.com/ldcsaa/hp-soa/blob/master/README.mdQQ Group: 44636872, 66390394…

佳易王羽毛球馆计时计费软件操作教程,软件可以自动计算费用,支持会员管理

一、前言(编程应用实例系列): 佳易王羽毛球馆计时计费软件操作教程,软件可以自动计算费用,支持会员管理 软件有试用版,可以下载试用,了解软件操作和软件功能。 软件试用版下载可以点击最下方…

37.从0到上线三天搭建个人网站(第一天)

点赞收藏加关注,你也能住大别墅! 挑战三天搭建个人网站 从0到上线 一、项目的主要功能 1.作为自己在网上的一个工作室。 2.发帖 3.展示个人项目连接 4.介绍自己(没准儿还能接点活儿) 二、UI风格参考 三、技术选型 1.前端&a…

【C++高阶(六)】哈希的应用--位图布隆过滤器

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C   🔝🔝 哈希的应用 1. 前言2. 位图的概念以及定义3. 位…

深度学习——Loss汇总

深度学习——Loss汇总 一、IOU Loss二、L1 Loss 一、IOU Loss 公式: 参考资料: 目标检测回归损失函数——IOU、GIOU、DIOU、CIOU、EIOU 二、L1 Loss 公式: 参考资料: PyTorch中的损失函数–L1Loss /L2Loss/SmoothL1Loss

【FMC140】 基于VITA57.4标准的双通道5.2GSPS(或单通道10.4GSPS)射频采样FMC+子卡模块

板卡概述 FMC140是一款具有缓冲模拟输入的低功耗、12位、双通道(5.2GSPS/通道)、单通道10.4GSPS、射频采样ADC模块,该板卡为FMC标准,符合VITA57.1规范,该模块可以作为一个理想的IO单元耦合至FPGA前端,8通道…

<avue-crud/>,二级表头,children下字典项的dicUrl失效问题

目录 1.提出问题&#xff1a; 1.1 代码&#xff1a; 1.2 效果图&#xff1a;会发现处在children下的dicUrl失效了 2. 解决思路 3. 解决代码&#xff08;你要的都在这&#xff0c;看这里&#xff09; 1.提出问题&#xff1a; 在使用<avue-crud/>组件实现二级表头时&…

Leetcode2336 无限集中的最小数字

题目&#xff1a; 现有一个包含所有正整数的集合 [1, 2, 3, 4, 5, ...] 。 实现 SmallestInfiniteSet 类&#xff1a; SmallestInfiniteSet() 初始化 SmallestInfiniteSet 对象以包含 所有 正整数。int popSmallest() 移除 并返回该无限集中的最小整数。void addBack(int nu…

Linux | Ubuntu设置 netstat(网络状态)

netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据&#xff0c;一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序&#xff0c;它能提供TCP连接&#xff0c;TCP和UDP监听&#xff0c;进程内存管理的相关报告。 1.netstat的安装 搜…

nodejs最新电商jd m端h5st 4.2签名算法4.2版本逆向,jd API接口,jd商品数据采集

前言&#xff1a; jd m端使用最新的h5st 4.2签名算法&#xff0c;与h5st 4.1版本有很大的不同。在这儿分析一下&#xff0c;供大家参考。 一、目标地址(Base64解码) aHR0cHM6Ly9zby5tLmpkLmNvbS93YXJlL3NlYXJjaC5hY3Rpb24/a2V5d29yZD0lRTklOTklQTQlRTYlQjklQkYlRTYlOUMlQkEmc2…

c++基本常见错误总结

我们无论是在学习中还是在工作当中&#xff0c;总是会遇到各种各样的c编译错误问题&#xff0c;经常会有一种情况就是上一次好像遇到过这种问题&#xff0c;但是就是想不起来了&#xff08;我就是这样&#xff09;所以下面这一篇文章就是总结自己遇到的编译以及运行错误。 注意…

药食同源的食物哪些适合冬季吃?

药食同源的食物是指在中医理论指导下&#xff0c;既是药物又是食物的天然植物和动物&#xff0c;具有营养和药效双重作用。在冬季&#xff0c;由于气候寒冷&#xff0c;人体需要更多的热量和营养来保持温暖和健康&#xff0c;因此药食同源的食物在冬季特别适合食用。以下是几种…

(5h)Unity3D快速入门之Roll-A-Ball游戏开发

DAY1&#xff1a;Unity3D安装 链接 DAY2&#xff1a;构建场景&#xff0c;编写代码 链接 内容&#xff1a;WASD前后左右移动、摄像机跟随 DAY3&#xff1a;待更新 DAY4&#xff1a;待更新 DAY5&#xff1a;待更新

UG\NX二次开发 设置是否允许通过NXOpen锁定属性

文章作者:里海 来源网站:里海NX二次开发3000例专栏 感谢粉丝订阅 感谢 2301_80939425 订阅本专栏,非常感谢。 简介 在使用UF_ATTR_set_locked函数锁定属性前,需要先设置是否允许通过NXOpen锁定属性。使用下面的代码可以修改“用户默认设置”当 NX 启动时,客户默认值将读取…