Kettle 浅入浅出

news2025/1/12 17:31:04

前言

最近又要迭代客户定制化的数据处理系统了。提到数据处理,不禁想到了以前使用过的 ETL 处理工具 Kettle。本文将对 Kettle 做一些简单的介绍。

Kettle 介绍

在介绍 Kettle 前先了解下什么是 ETL,ETL 是 Extract-Transform-Load 的缩写,即数据抽取、转换、装载的过程,对于企业或行业应用来说,经常会遇到各种异构数据的处理、转换、迁移等操作,这些操作有可能会面对大量的数据和繁琐的步骤,因此就萌生了一些 ETL 处理工具,市面上常见的 ETL 工具有很多,比如 Sqoop、DataX、Kettle、Talend 等,本篇文章就主要来介绍下 Kettle 工具。

Kettle(水壶)是一款国外开源的 ETL 工具,现在已经更名为 PDI,Pentaho Data Integration-Pentaho 的缩写,由纯 java 编写,可以在 Window、Linux、Unix 上运行,绿色无需安装,数据抽取高效稳定。它可以处理各种异构数据库中的数据,并且提供了可视化图形界面的方式进行操作,让你思路主要关注在如果处理数据上,而不是如何实现处理的过程,特点如下图介绍:
在这里插入图片描述
Kettle 的官网地址如下:

https://community.hitachivantara.com/home

如上图介绍,Kettle 分了两种脚本文件,transformation(转换)和 job(作业),transformation 主要完成对数据的处理和转换,job 则完成整个工作流的控制,一个 job 可以包含多个 transformation,如下图所示:
图片
图片
另外在 Kettle 中又包含了4个核心组件,分别如下:

  • 勺子(Spoon.bat/Spoon.sh):图像化界面,可以通过图形化界面交互方式开发 transformation 和 job。
  • 煎锅(Pan.bat/pan.sh):可以用命令行的形式执行由 Spoon 编辑的 transformation 和 job。
  • 厨房(Kitchen.bat/kitchen.sh):可以使用命令行调用由 Spoon 编辑好的 job。
  • 菜单(Carte.bat/carte.sh):一个轻量级的 Web 容器,用户建立远程 ETL Server。

Kettle 安装

安装前,需要电脑上已经安装配置好 jdk 环境,版本建议1.8及以上。

下载 kettle 压缩包:

https://sourceforge.net/projects/pentaho/files/Pentaho%209.1/

Kettle 为绿色软件,下载后可以解压到任意本地路径,但注意尽量不要带有中文路径,不然会出现意想不到的效果。

其中 Kettle 的目录说明如下:
图片
图片

Kettle 使用基本介绍

双击解压目录下的 Spoon.bat 即可启动图形化界面工具,启动过程有点慢耐心等待下,如果启动失败,可以修改下 JVM 的最堆内存的大小,Spoon.bat 文件下:
图片
等待片刻后会进到如下页面:
图片
在“工具栏/文件/新建”下可以选择创建一个转换和作业:
图片

转换

转换(transaformation)主要负责数据的输入、转换、校验和输出等工作。转换由多个 Step(步骤)组成,如文本文件输入,过滤输出行,执行 SQL 等。各个步骤之间使用 Hop(跳)来链接。
图片
Step 是转换里的基本的组成部分,比如上面的 CSV 文件输入和 Excel 输出,一个 Step 有如下几个关键特性:

  • Step 需要有一个名字,这个名字在同一个转换范围内唯一。
  • Step 将数据写到与之相连的一个或多个输出 Hop,再传送到指向的另一端的 Step。
  • 大多数的 Step 都可以有多个输出,当出现多个输出时可以选择复制或分发,复制是所有的记录被同时发送到所有的目标步骤,分发是目标步骤轮流接收记录:
    图片
    Hop 是 Step 之间带箭头的连线,定义了数据的通路。Hop 实际上是两个 Step 之间被称之为行集的数据行缓存,行集的大小可以在转换的设置里定义。当行集满时,向行集写数据的 Step 将停止写入,直到行集里又有了空间。当行集空了,从行集读取数据的 Step 停止读取,直到行集里又有可读的数据行。

其中转换属性可以双击空白处:
图片

数据元数据

每个步骤在输出数据行时都有对字段的描述,也就是数据行的元数据。元数据通常包含下面一些信息。

  • 名称:数据行里的字段名是唯一的
  • 数据类型:字段的数据类型
  • 格式:数据显示的方式,如 Integer 的 #、0.00
  • 长度:字符串的长度或者 BigNumber 类型的长度
  • 精度:BigNumber 数据类型的十进制精度
  • 货币符号:¥
  • 小数点符号:十进制数据的小数点格式。不同文化背景下小数点符号是不同的,一般是点(.)或逗号(,)
  • 分组符号:数值类型数据的分组符号,不同文化背景下数字里的分组符号也是不同的,一般是点(.)或逗号(,)或单引号(’)
    图片

数据的类型

Kettle 中的数据区分了数据的类型,类型包含如下几种:

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

作业

作业(Job),负责定义一个完成整个工作流的控制,比如将转换的结果发送邮件给相关人员。因为转换(transformation)以并行方式执行,如果需要一个串行的调度工具来执行转换,就可以使用作业:
图片

Kettle 数据处理案例

例如有如下 CSV 数据,其中字段分别表示:用户ID、用户名、性别、成绩1、成绩2、成绩3 :
图片

id,name,sex,grade1,grade2,grade3
1,小明,,90,80,70
2,小红,,91,81,71
3,小兰,,92,82,72
4,小爱,,93,83,73
5,张三,,94,84,74
6,李四,,95,85,75
7,王五,,96,86,76
8,赵六,,97,87,77
9,小六,,98,88,78
10,小七,,99,89,79

现有需求:要求计算出每个人的总成绩和平均分,将结果输出到 Excel 中。

新建一个转换:
图片
拖入一个 CSV 文件输入:
图片
双击 CSV 文件输入,选择 CSV 文件、编码等:
在这里插入图片描述
可以点击预览查看数据:
图片
下面拖入一个 计算器 ,计算成绩总和:
图片
按住 Shift 连接上 CSV 文件输入和计算器:
图片
双击计算器,修改名称,并指定计算方式:
图片
此时可以运行下看下计算结果:
图片
图片
可以看到已经计算出了总成绩,下面计算平均分数的话还需要一个常量3:
图片
双击进入修改名称和指定常量值:
图片
下面再拖一个计算器,计算平均分数,参数如下:
图片
到这可以运行下看下结果:
图片
可以看到已经计算出平均成绩了,下面就可以输出到 Excel 中了,拖入一个 Excel 输出:
图片
双击进入修改属性:
图片
再进入到字段下指定输出的字段,其中 num 字段仅仅是为了计算用的,这里删除掉:
图片
最后运行转换,到输出目录下查看 Excel 中的内容:
图片
图片
已经写入处理后的数据。

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

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

相关文章

【opencv】计算机视觉基础知识

目录 前言 1、什么是计算机视觉 2、图片处理基础操作 2.1 图片处理:读入图像 2.2 图片处理:显示图像 2.3 图片处理:图像保存 3、图像处理入门基础 3.1 图像成像原理介绍 3.2 图像分类 3.2.1 二值图像 3.2.2灰度图像 3.2.3彩色图像…

A++ 敏捷开发-1 如何改善

1 如何改善 敏捷开发过程改进案例 5月 A公司一直专门为某电信公司提供针对客服、线上播放等服务服务。 张工是公司的中层管理者,管理好几个开发团队,有5位项目经理向他汇报。 他听说老同学的团队都开始用敏捷开发,很感兴趣,便参…

【Linux】I/O多路转接技术

I/O多路转接技术 一、I/O多路转接之select1、select函数2、fd_set的相关内容3、如何在代码中高效的使用select函数4、select服务器5、select的优缺点6、select的适用场景 二、I/O多路转接之poll1、poll函数2、struct pollfd结构2、poll服务器3、poll的优缺点 三、I/O多路转接之…

一个简单的参数帮助框架,c实现

文章目录 具体实现如下&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h> void print_help(char *argv[]) { printf("Usage: %s [options]\n", argv[0]); printf("Options:\n"); printf(" -h, -…

使用SLS日志服务采集Kong网关的日志

一、阿里云SLS 官方的接入文档已比较丰富了&#xff0c;本文不意重复说明此事。 站在使用的角度&#xff0c;以采集Kong的日志为示例&#xff0c;说明我们应该如何治理日志。 说白了&#xff0c;本文是想给你怎么省钱作一个建议&#xff0c;希望不会让你公司也“降本增笑”。…

1-cuda与gpu编程

文章目录 CUDA与GPU编程1. 并行处理与GPU体系架构1.1 并行处理简介1.1.1 串行处理与并行处理的区别1.1.2 并行处理的概念1.1.3 常见的并行处理 1.2 GPU并行处 理1.2.1 GPU与CPU并行处理的异同1.2.2 CPU的优化方式1.2.3 GPU的特点 1.3 环境搭建1.4 环境变量配置 参考环境搭建设置…

用HeidiSQL在MySQL中创建新的数据库

用有权限的用户登录&#xff1a; 右键单击&#xff0c;选择&#xff1a; 输入要创建的数据库名称&#xff0c;然后点击“确定”&#xff1a; 刷新下&#xff0c;就看到新创建的数据库了&#xff1a; 在新创建的数据库中&#xff0c;就可以做其它操作了&#xff0c;例如…

三、使用CRT连接三台虚拟机

目录 1、建立连接 2、参数配置 3、设置主题,颜色和仿真 1、建立连接

厉害了!!FastReport 全系.NET控件升级v2024,已覆盖支持全新.NET 8 框架 ~

FastReport 作为一款国际知名的报表开发控件&#xff0c;其跨平台的多语言脚本引擎FastScript&#xff0c;桌面OLAP FastCube&#xff0c;被世界各地的开发者所认可。 此次FastReport旗下.NET全系更新至v2024新版&#xff0c;在此版本中&#xff0c;上线了许多开发者关注的功能…

SpringSecurity的默认登录页的使用

SpringSecurity的默认登录页的使用 01 前期准备 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--mysql驱动--><dependency><grou…

鸿蒙(HarmonyOS)HelloWo入门

1.HarmonyOS简单介绍 1. HarmonyOS特征&#xff1a;一开发发&#xff0c;多端部署&#xff0c;可分可合&#xff0c;自由流转2. HarmonyOS使用的语言&#xff1a;是ArkTs,ArkTs是在TypeScript(简称TS)基础上扩展的&#xff0c;而TS又是在JavaScript(简称JS)的超集、UI框架ArkUI…

看Spring源码不得不会的@Enable模块驱动实现原理讲解

这篇文章我想和你聊一聊 spring的Enable模块驱动的实现原理。 在我们平时使用spring的过程中&#xff0c;如果想要加个定时任务的功能&#xff0c;那么就需要加注解EnableScheduling&#xff0c;如果想使用异步的功能&#xff0c;那就要加EnableScheduling注解&#xff0c;其实…

windows系统可以正常打开蓝牙,但是不能扫描到可连接的设备,蓝牙异常

项目场景&#xff1a; windows系统可以正常打开蓝牙&#xff0c;但是不能扫描到可连接的设备 问题描述 windows系统可以正常打开蓝牙&#xff0c;但是不能扫描到可连接的设备&#xff0c;在尝试卸载重装蓝牙驱动后依然不可以使用 原因分析&#xff1a; 驱动程序问题&#xf…

【23真题】耗时一周还原,终于有真题啦!

今天分享的是23年上海电力850的信号与系统回忆版试题及解析。上电的真题资源极其稀少&#xff0c;去年我找了3份&#xff0c;全部为假&#xff01;好在今年有刚刚上岸的同学全力协助&#xff0c;为大家弄出一份回忆版真题&#xff0c;希望对大家有帮助&#xff01; 小马哥Tips…

Springboot+vue的疗养院管理系统(有报告),Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的疗养院管理系统&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的疗养院管理系统&#xff0c;采用M&#xff08;mod…

class dump使用方式和原理

一、安装 官网下载安装包完成后&#xff0c;将class-dump复制到usr/bin文件夹下 如果这个时候没有发现usr文件夹 说明其隐藏起来了 去查询mac系统下怎么显示隐藏文件 发现mac os 10.11不让复制 没有这个权限 解决办法如下&#xff1a; 重启电脑&#xff0c;按住 command …

机器人仿真系统调研

仿真是机器人学习和研究过程中最重要的工具之一&#xff0c;是指通过计算机对实际的物理系统进行模拟的技术。机器人仿真基于交互式计算机图形技术和机器人学理论&#xff0c;生成机器人的几何图形&#xff0c;并对其进行三维显示&#xff0c;用来描述机器人及工作环境的动态变…

FineReport帆软报表的表格动态列的实现

关于帆软 帆软报表&#xff08;FineReport&#xff09;是一款企业级的数据报表工具&#xff0c;旨在帮助用户快速创建、设计和生成各种类型的报表。它提供了丰富的报表设计功能和灵活的数据展示方式&#xff0c;适用于各种行业和业务需求 以下是帆软报表的一些主要特点和功能…

【赠书第10期】从概念到现实:ChatGPT和Midjourney的设计之旅

文章目录 前言 1 ChatGPT的崛起 2 Midjourney的探索 3 技术创新的交汇 4 对未来的影响 5 结论 6 推荐图书 7 粉丝福利 前言 在过去的几年里&#xff0c;自然语言处理和聊天模型的领域取得了飞速的发展。ChatGPT 作为一个由OpenAI 开发的大型语言模型&#xff0c;以其强…

C++解析xml示例

C解析xml示例 1. Xml文档介绍1.1 特点及作用1.2 Xml优点1.2.1 良好的可拓展性1.2.2 内容与形式分离 1.3 Xml组成1.3.1 Xml声明1.3.2 根元素1.3.3 元素1.3.4 属性1.3.5 实体1.3.6 注释 2 C解析Xml2.1 tinyXml2类库2.2 关键接口2.2.1 LoadFile2.2.2 RootElement2.2.3 FirstChildE…