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

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

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

相关文章

37 - 数据库参数设置优化,失之毫厘差之千里

MySQL 是一个灵活性比较强的数据库系统,提供了很多可配置参数,便于我们根据应用和服务器硬件来做定制化数据库服务。如果现在让你回想,你可能觉得在开发的过程中很少去调整 MySQL 的配置参数,但我今天想说的是我们很有必要去深入了…

什么是PDM图纸管理系统?PDM图纸管理系统主要功能有哪些?

PDM (Product Data Management) 图纸管理系统 是用于管理企业内部图纸和相关文件的软件系统。它提供了一个集中存储、组织和跟踪图纸和文件的平台,以确保团队成员能够轻松访问、共享和更新所需的工程设计和制造数据。 彩虹PDM系统|PDM产品数据管理系统|BOM管理|工艺…

Kubernetes(K8s)资源管理-03

资源管理 资源管理介绍 在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes。 kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服务,其实就是在kubernetes集…

Stable-Diffusion——Windows部署教程

Windows 参考文章:从零开始,手把手教你本地部署Stable Diffusion Webui AI绘画(非最新版) 一键脚本安装 默认环境安装在项目路径的venv下 conda create -n df_env python3.10安装pytorch:(正常用国内网就行) python -…

Mac 浏览器下载的文件名总是「乱码」

如果可以实现记得点赞分享,谢谢老铁~ 本文所说的方法是在出现文件名乱码情况下,如何恢复文件名的正确中文名称,并非一劳永逸地避免乱码的出现。这是由于下载文件名称乱码的出现,往往是系统、浏览器、网站三方面因素共…

Redis 通用命令和数据类型

get和set get和set两个命令是最基本也是最常用的命令,主要用于操作字符串类型的数据。 1.SET 命令: SET 命令用于设置指定 key 的值。如果 key 已经持有其他值,SET 就覆写旧值,无视类型。具体的命令格式如下: SET key value例如…

CentOS 7 部署 Nacos (单机版)

CentOS 7 部署 Nacos (单机版) 1. 下载 Nacos 安装包 历史版本:https://github.com/alibaba/nacos/releases/ 我选的是 2.1.0 版本,https://github.com/alibaba/nacos/releases/download/2.1.0/nacos-server-2.1.0.tar.gz 2. …

PostgreSQL-SQL联表查询LEFT JOIN 数据去重复

我们在使用left join联表查询时,如果table1中的一条记录对应了table2的多条记录,则会重复查出id相同的多条记录。 1、解决方法一 SELECT t1.* FROM table1 t1 LEFT JOIN table2 t2 ON t1.id t2.tid 第一种方法我们发现还是有重复数据 2、解决方法二…

深度学习毕设项目 深度学习 python opencv 动物识别与检测

文章目录 0 前言1 深度学习实现动物识别与检测2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存…

Elasticsearch:FMA 风格的向量相似度计算

作者:Chris Hegarty 在 Lucene 9.7.0 中,我们添加了利用 SIMD 指令执行向量相似性计算的数据并行化的支持。 现在,我们通过使用融合乘加 (Fused Mulitply-Add - FMA) 进一步推动这一点。 什么是 FMA 乘法和加法是一种常见的运算,…

RNN-T Training,RNN-T模型训练详解——语音信号处理学习(三)(选修三)

参考文献: Speech Recognition (option) - RNN-T Training哔哩哔哩bilibili 2020 年 3月 新番 李宏毅 人类语言处理 独家笔记 Alignment Train - 8 - 知乎 (zhihu.com) 本次省略所有引用论文 目录 一、如何将 Alignment 概率加和 对齐方式概率如何计算 概率加和计…

OBC、DCDC自动化测试解决方案!

OBC(车载充电机)和DCDC(直流-直流变换器)是电动汽车的核心部件,DCDC和OBC的功能质量对于整车的性能和安全性至关重要。在OBC和DCDC,以及整车开发测试过程中,需要对OBC和DCDC进行功能和性能方面进行全面的测…

1990-2021年上市公司排污费和环境保护税数据

1990-2021年上市公司排污费和环境保护税数据 1、时间:1990-2021年 2、指标: 证券代码、会计期间、year、month、行业、应缴排污费/环境保护税、其中:大气污染物、其中:水污染物、其中:固体废物、其中:噪…

京东API商品详情接口,通过商品ID获取商品名称,淘宝主图,价格,颜色规格尺寸,库存,SKU数据等调用示例

要接入京东API接口以采集电商平台上的商品数据,可以按照以下步骤进行: 注册并获取API密钥:在使用API接口之前,需要注册并获取API密钥。API密钥是识别身份的唯一标识符。每个API接口都有自己的注册、认证和授权过程,因…

设计规则:模块化的力量

这是一本比较冷门的书**《设计规则:模块化的力量》**,虽然豆瓣上只有58个评价,但是确实能学到很多东西。 这本书对我非常深远。不是是投资,创业,还是其他领域,模块化思想都能帮上你。这本书告诉我们生万物…

elasticsearch操作

目录 一、mapping映射属性二、索引库的CRUD2.1 创建索引库和映射2.2 查询索引库2.3 修改索引库2.4 删除索引库2.5 总结 三、文档操作3.1 新增文档3.2 查询文档3.3 删除文档3.4 修改文档3.5 总结 四、RestClient操作索引库4.1 初始化RestClient4.2 创建索引库4.3 删除索引库4.4 …

yolov1网络结构说明

文章目录 一. 网络结构二. 网络说明1. 网络的输入2. 网络的输出(1) 5 5表示:每个网格使用两个先验框进行预测。(2) “5”表示:每个先验框包含的预测信息的数量。(3) 20表示:20个分类预测值(4) 每个网格能预测几个目标? 一. 网络结构 论文下…

【古月居《ros入门21讲》学习笔记】18_常用可视化工具的使用

目录 说明: 1. Qt工具箱 日志输出工具:rqt_console 绘制数据曲线:rqt_plot 图像渲染工具:rqt_image_view 综合工具:rqt 2. 三维可视化工具:Rviz Rviz启动 使用示例 3. 仿真平台:Gazebo…

Kotlin学习——kt入门合集博客 kt里的委派模式Delegation kt里的特性

Kotlin 是一门现代但已成熟的编程语言,旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作,并提供了多种方式在多个平台间复用代码,以实现高效编程。 https://play.kotlinlang.org/byExample/01_introduction/02_Functio…

谱方法学习笔记-下(超详细)

谱方法学习笔记📒 谱方法学习笔记-上(超详细) 声明:鉴于CSDN使用 K a T e X KaTeX KaTeX 渲染公式, KaTeX \KaTeX KATE​X 与 L a T e X LaTeX LaTeX 不同,不支持直接的交叉引用命令,如\label和\eqref。 KaTeX \KaT…