• 【大数据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脚本
  • 相关阅读:
    浅析斐波那契数列在代码中的应用
    Python Flask框架(二)Flask与HTTP
    【LeetCode75】第六十四题 最长公共子序列
    三极管及继电器的使用(单片机如何控制灯泡等大型电器)
    postman请求400错误-日期LocalData
    一文读懂HTML的头部内容,希望有所帮助
    SQL多表设计--一对多(外键)
    ElasticSearch系列-简介与安装详解
    计及源荷不确定性的综合能源生产单元运行调度与容量配置随机优化模型MATLAB
    Java常用类(一)
  • 原文地址:https://blog.csdn.net/Xiao_cai_gun/article/details/127101365