当前位置: 首页 > news >正文

【大数据ETL工具,Kettle的学习和使用】

第1章 Kettle概述

1.1 ETL简介

ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种ETL工具的使用,必不可少。
市面上常用的ETL工具有很多,比如Sqoop,DataX,Kettle,Talend等,作为一个大数据工程师,我们最好要掌握其中的两到三种,这里我们要学习的ETL工具是Kettle!

1.2 Kettle简介

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。
Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。
Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
Kettle(现在已经更名为PDI,Pentaho Data Integration-Pentaho数据集成)。

1.Kettle 输入控件

  • CSV文件输入
  • 文本文件输入
  • Excel输入
  • XML输入
  • JSON输入
  • 表输入

2.Kettle 输出控件

  • Excel输出
  • 文本文件输出
  • SQL文件输出
  • 表输出
  • 更新&插入/更新
  • 删除

3.Kettle 转换控件

3.1 kettle的转换控件,是ETL里面的T(Transform),主要工作是进行数据转换,数据清洗
3.2 ETL整个过程中,Transform的工作量最大,耗时也久,约整个ETL的2/3。
3.3 Kettle的常用转换控件有:

  • 1 Concat fields
  • 2.值映射
  • 3.列拆分
  • 4.列转行
  • 5.剪切字符串
  • 6.去除重复记录
  • 7.唯一行(哈希值)
  • 8.增加常量
  • 9.增加序列
  • 10.字段选择
  • 11.字符串操作
  • 12.字符串替换
  • 13.拆分字段
  • 14.排序记录
  • 15.行扁平化
  • 16.行转列
  • 17.计算器

3.1 Concat Fileds(拼接字段)

转换控件Concat fields,顾名思义,就是将多个字段连接起来形成一个新的字段。
练习:将staff表的firstname和lastname拼接起来,形成name字段,然后再将数据插入到新表emp中

3.2 值映射(把字段一个值映射成其他值)

本章节任务:将staff表的sex字段,映射成男or女,然后再插入到emp表中

3.3 增加常量&增加序列(给数据流加一列相同值&加一列序列)

3.4 字段选择(从数据流选择字段、改变名称,类型)

3.5 计算器 (通过函数集合创建新的字段)

3.6 字符串剪切&替换&操作

剪切字符串是指定输入流字段裁剪的位置剪切出新的字段。
字符串替换是指定搜索内容和替换内容,如果输入流的字段匹配上搜索内容就进行替换生成新字段。
字符串操作是去除字符串两端的空格和大小写切换,并生成新的字段。

3.7 排序记录&去除重复记录

去除重复记录是去除数据流里面相同的数据行。但是此控件使用之前要求必须先对数据进行排序,对数据排序用的控件是排序记录,排序记录控件可以按照指定字段的升序或者降序对数据流进行排序。因此排序记录+去除重复记录控件常常配合组队使用。

3.8 唯一行(哈希值)

唯一行(哈希值)就是删除数据流重复的行。此控件的效果和(排序记录+去除重复记录)的效果是一样的,但是实现的原理不同。排序记录+去除重复记录对比的是每两行之间的数据,而唯一行(哈希值)是给每一行的数据建立哈希值,通过哈希值来比较数据是否重复,因此唯一行(哈希值)去重效率比较高,也更建议大家使用。

3.9 拆分字段

拆分字段是把字段按照分隔符拆分成两个或多个字段。需要注意的是,字段拆分以后,原字段就会从数据流中消失。

3.10 列拆分为多行

列拆分为多行就是把指定字段按指定分隔符进行拆分为多行,然后其他字段直接复制。

3.11 行扁平化

行扁平化就是把同一组的多行数据合并成为一行,可以理解为列拆分为多行的逆向操作。

3.12 列转行(顾名思义)

列转行,顾名思义多列转一行,就是如果数据一列有相同的值,按照指定的字段,将其中一列的字段内容变成不同的列,然后把多行数据转换为一行数据的过程。

3.13 行转列

行转列,一行转多列,就是把数据字段的字段名转换为一列,把数据行变为数据列。我们也可以简单理解为行转列控件是列转行控件的逆向操作。

4 Kettle应用控件

  • 替换NULL值
  • 写日志

5 Kettle流程控件

  • Switch/case
  • 过滤记录
  • 空操作
  • 中止

6 Kettle查询控件

  • 数据库查询
  • 流查询

7 Kettle连接控件

  • 合并记录
  • 记录集连接

8 Kettle统计控件

  • 分组

9 Kettle映射控件

  • 映射

10 Kettle脚本控件

  • 执行SQL脚本

相关文章:

  • C++----二叉树的进阶
  • java基于微信小程序的智能停车场管理系统+ssm+uinapp+Mysql+计算机毕业设计
  • 学会这个样生成性能测试报告,拿下20k轻轻松松
  • 爬取小说章节,并制作成词云进行宣传
  • [架构之路-18]:目标系统 - 硬件平台 - 案例1 - 单片机MCU STM32 芯片的工作原理与启动流程
  • C++内存管理以及模板的引入
  • ROS问题:gazebo没有想要的模型,而且不报错
  • 【SpringBoot+MyBatisPlus】点餐系统之登录功能、退出功能设计
  • 操作符(operator)
  • 数据同步工具—Sqoop
  • 文件上传之中间件解析漏洞详解
  • 【每日一好题】这么经典的题你不能不会:矩阵置零
  • JSR223常用函数和对象--Jmeter内置对象Chapter1
  • 从头开始训练神经网络(Unet)
  • Python制作自动填写脚本,100%准确率
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • avalon2.2的VM生成过程
  • React-redux的原理以及使用
  • Terraform入门 - 3. 变更基础设施
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 深度学习在携程攻略社区的应用
  • 双管齐下,VMware的容器新战略
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 栈实现走出迷宫(C++)
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #每日一题合集#牛客JZ23-JZ33
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (4.10~4.16)
  • (8)STL算法之替换
  • (C语言)共用体union的用法举例
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (篇九)MySQL常用内置函数
  • (区间dp) (经典例题) 石子合并
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net framework profiles /.net framework 配置
  • .NET6 命令行启动及发布单个Exe文件
  • .NET的数据绑定
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • @Transient注解
  • @基于大模型的旅游路线推荐方案
  • []我的函数库
  • [ACTF2020 新生赛]Upload 1
  • [C#]C# winform实现imagecaption图像生成描述图文描述生成
  • [C++]AVL树怎么转
  • [CF226E]Noble Knight's Path
  • [FUNC]判断窗口在哪一个屏幕上
  • [HTML]HTML5实现可编辑表格
  • [leetcode]_String to Integer (atoi)