Kettle 浅入浅出

前言

最近又要迭代客户定制化的数据处理系统了。提到数据处理,不禁想到了以前使用过的 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.mzph.cn/news/187830.shtml

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

相关文章

Django回顾1

目录 1.c/s架构 2.b/s架构 3.基于socket写一个web应用 main.py index.html 4.手写web框架 main.py login.html time.html user_list.html user_list_new 二.HTTP协议 1.什么是HTTP协议 2.HTTP协议的作用 3.HTTP版本及区别 4.HTTP协议的特点 5.HTTP请求协议 常…

腹泻的原因,种类,风险因素,如何预防

谷禾健康 腹泻是常见的健康问题,相信绝大多数人在生活中都曾遭受过腹泻的困扰。 根据2016年柳叶刀期刊统计,慢性腹泻影响全世界 3%-20% 的成年人。全球每年有17亿儿童腹泻病例,腹泻是五岁以下儿童死亡的第五大原因,每年约有52.5万…

P1 什么是链表 C语言简单易懂

目录 前言 01 什么是链表 02 数组的特点 03 数组的缺点 3.1 删除数组其中一个元素 3.2 数组增加某个节点 04 链表 前言 🎬 个人主页:ChenPi 🐻推荐专栏1: 《 C 》✨✨✨ 🔥 推荐专栏2: 《 Linux C应用编程(概念…

如何在Ubuntu上清理缓存和垃圾文件

随着时间的推移,Ubuntu系统上可能会积累大量的缓存和垃圾文件,占据宝贵的磁盘空间,同时也可能影响系统性能。为了确保系统保持高效运行并释放磁盘空间,我们可以定期执行清理操作。在本文中,我们将介绍一些常见的清理步…

Leetcode98 验证二叉搜索树

题意理解: 首先明确二叉树的定义,对于所有节点,根节点的值大于左子树所有节点的值,小于右子树所有节点的值。 注意一个误区: 根节点简单和左孩子,右孩子比大小是不够的,要和子树比,…

2024年天津天狮学院专升本专业课考试报名通知

天津天狮学院2024年高职升本科专业课报名时间考试时间通知 1.报名条件 报名条件和具体要求按照天津市招生委员会的文件规定执行。考生必须完成文化课报名环节,且填报天津天狮学院志愿,方可报考我校专业课考试。考生提供的各种证件应真实有效&#xff0…

数据结构和算法-树和二叉树的定义和基本术语和性质

文章目录 树的基本概念和相关术语相关的应用节点间的关系描述节点,树的属性描述有序树vs无序树树vs森林小结 树的相关性质考点1考点2考点3考点4考点5考点6小结 二叉树的相关概念和基本术语重要 (五种状态)特殊二叉树小结 二叉树的相关性质二叉…

css深度选择器>>>、/deep/ 、::v-deep 、:deep()

很多vue的组件库 , 如vant,elementUI, iview等都可能自定义样式。 如项目中用到了 elementui,如果使用预处理器 scss, sass,less , 修改样式可能修改不掉, 而且这种需求出现的频率非常高。但如果去掉scoped话又会影响全局样式。当然我们知道可…

设计模式之美学习笔记-理论篇1-面向对象的特性

一、设计模式前言 面向对象 主流的编程范式或者是编程风格有三种,它们分别是面向过程、面向对象和函数式编程。面向对象这种编程风格又是这其中最主流的。现在比较流行的编程语言大部分都是面向对象编程语言。大部分项目也都是基于面向对象编程风格开发的。面向对…

中职组网络安全-FTPServer20221010.img(环境+解析)

任务环境说明: √服务器场景:FTPServer20221010.img √服务器操作系统:未知(关闭链接) √FTP用户名:attack817 密码:attack817 1.分析attack.pcapng数据包文件,通过分析数据包attack…

elasticsearch聚合、自动补全、数据同步

目录 一、数据聚合1.1 聚合的种类1.2 DSL实现聚合1.2.1 Bucket聚合语法1.2.2 聚合结果排序1.2.3 限定聚合范围1.2.4 Metric聚合语法 1.3 RestAPI实现聚合 二、自动补全2.1 拼音分词器2.2 自定义分词器2.3 自动补全查询2.4 RestAPI实现自动补全 三、数据同步3.1 思路分析3.1.1 同…

哈希表Leetcode 1657. 确定两个字符串是否接近

如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串 接近 : 操作 1:交换任意两个 现有 字符。 例如,abcde -> aecdb操作 2:将一个 现有 字符的每次出现转换为另一个 现有 字符,并对另…

PCP的Parallel Repetition

1. 引言 见Alessandro Chiesa等人2023年论文《On Parallel Repetition of PCPs》。 Parallel Repetition(并行重复)可用于: 降低probabilistic proofs的soundness error 的同时提升某些衡量指标的效率 interactive proofs(IPs…

模型层——多表操作

多表操作 一 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄。 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息。作者详情模型和作…

YOLOv5全网独家首发改进:SENetv2,Squeeze-Excitation模块融合Dense Layer,效果秒杀SENet

💡💡💡本文自研创新改进:SENet v2,针对SENet主要优化点,提出新颖的多分支Dense Layer,并与Squeeze-Excitation网络模块高效融合,融合增强了网络捕获通道模式和全局知识的能力 推荐指数:五星 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/catego…

项目申请书撰写【笔记】

撰写项目申请书需要良好的科技写作技能。好的项目申请书应该条理清 晰、逻辑严密。整份申请 书要有清晰的结构,每部分都有特定的功能,让项目评审人觉得一目了 然。每一段话也要有特定的功能,表达要有层次和递进。要注意起承转合、文脉通畅&am…

【24押题卷】小马哥终极押题3+1!

告别11月,迎接12月!说来也是缘分,各平台发了快200套真题,梳理了6本教材课后习题,讲解了吴大正、郑君里、奥本三本重点习题。终于我“悟了”,你们会发现,我今年做的每一套真题解析,几…

Linux Ubuntu protobuf 安装方法

文章目录 安装方法检验安装意外状况 安装方法 去GitHub官网找下载地址 安装 protobuf 21.11 GitHub 资源地址 选择安装版本 (是一个URL网址) 例如这里选用:protobuf-all-21.11.zip 资源 安装依赖库,执行指令 6. sudo apt-get …

【Node.js】笔记整理4 - 版本管理工具nvm

写在最前:跟着视频学习只是为了在新手期快速入门。想要学习全面、进阶的知识,需要格外注重实战和官方技术文档,文档建议作为手册使用 系列文章 【Node.js】笔记整理 1 - 基础知识【Node.js】笔记整理 2 - 常用模块【Node.js】笔记整理 3 - n…

毕业项目分享

大家好,今天给大家分享112个有趣的Python实战项目,可以直接拿来实战练习,涵盖机器学习、爬虫、数据分析、数据可视化、大数据等内容,建议关注、收藏。 项目名称 主要技术 2023招聘数据分析可视化系统爬虫 7种薪资预测模型 Flas…