【大数据开发必看】可视化ETL神器--Kettle

Kettle

1. 数据仓库与ETL

1.1 数据仓库

  • 本质:专门针对于数据存储模型
  • 实现:Mysql、Oracle、Hive
  • 应用:专门用于实现将各种各样的数据进行统一化规范化的数据存储,为所有数据应用提供数据
    • 数据分析
    • 数据挖掘
    • 用户画像
    • 推荐系统
    • 风控系统…
  • 特点:
    • 本身也不产生数据
    • 本身也不使用数据
    • 用于实现复杂数据的存储
  • 与数据库的区别
    • 数据库:一般用于支撑业务数据的存储
      • 网站后台:用户数据、商品数据、订单数据
    • 数据仓库:专门为数据处理提供数据的
      • 业务数据
      • 用户行为
      • 爬虫数据
      • 第三方数据
      • 日志数据…
  • 问题:
    • 数据种类非常的多,每一种数据的内容或者格式都不一样
      • 有结构化的,有非结构化的
      • 有合法的,有非法的
      • 有需要的,有不需要的
    • mysql是一个专门用于存储结构化数据的数据存储工具
      • 结构化
      • 合法
      • 需要的
    • 如何将各种各样的数据存储在mysql中?
  • 解决:
    • 数据产生以后,不能直接放入数据仓库【mysql】中存储
    • 对原始数据进行一步预处理,将需要的,合法的数据放入数据仓库中
    • 这一步预处理:ETL【数据清洗】

1.2 ETL

  • 功能:实现数据的预处理,数据清洗过程,将 原始数据 经过ETL处理变成 想要的数据,进行下一步的应用
  • 实现:
    • 抽取:读取需要处理的数据
    • 转换:将原始数据转换为目标数据
      • 过滤:将不需要的数据过滤掉
        • 原始数据中有100列,实际需要30列 —> 过滤掉70列
      • 补全:将需要用到的数据补全
        • 每一个访问网站或者APP时,会有一个IP地址 —> 后台通过IP能获取到我们当前所在的国家、省份、城市
      • 转换:原始数据的格式不是我们想要的格式,转换为想要的格式
        • 原始数据:22/Aug/2021:15:20:35 ----> 目标格式:2021-08-22 15:20:35
    • 加载:将处理好的目标数据放入数据仓库中

1.3 Kettle

  • 功能:实现可视化ETL
    • 可视化:不用写复杂的代码程序,可以通过图形化的界面来实现数据的处理
  • 特点:
    • 学习以及使用的成本比较低
    • 功能非常强大

2. Windows版本部署

2.1 JDK安装

2.2 Kettle安装

3. Kettle使用

3.1 转换

  • 功能:实现一个转换的程序
    • 输入:要读取什么数据进行转换
    • 转换:对数据怎么进行处理
    • 输出:要将处理好的数据保存到什么地方

3.2 作业

  • 功能:将多个转换根据需要构建任务流
    • 任务流:很多个任务【每一个转换程序】根据自动运行的条件来运行就是任务流
    • 实际工作中,一次要执行很多个转换任务,如何实现这些任务的自动化执行
    • 自动运行:
      • 第一种:定时运行
        • 每天的00:01分开始自动运行
      • 第二种:依赖关系
        • A先运行,A运行成功,B就自动运行
  • 举例:
    • 转换1:实现对数据的过滤
    • 转换2:实现对数据的补全
    • 转换3:实现对数据的转换
    • 作业:一个任务流
      • 转换1:每天00:10分自动运行
      • 转换2:转换1运行成功,转换2就开始运行
      • 转换3:转换2运行成功,转换3就开始运行

4. 实战案例一

4.1 需求

  • 将txt文件中的数据写入Excel表格中

    id,name,age,gender,province,city,region,phone,birthday,hobby,register_date
    392456197008193000,张三,20,0,北京市,昌平区,回龙观,18589407692,1970-8-19,美食;篮球;足球,2018-8-6 9:44
    267456198006210000,李四,25,1,河南省,郑州市,郑东新区,18681109672,1980-6-21,音乐;阅读;旅游,2017-4-7 9:14
    892456199007203000,王五,24,1,湖北省,武汉市,汉阳区,18798009102,1990-7-20,写代码;读代码;算法,2016-6-8 7:34
    492456198712198000,赵六,26,2,陕西省,西安市,莲湖区,18189189195,1987-12-19,购物;旅游,2016-1-9 19:15
    392456197008193000,张三,20,0,北京市,昌平区,回龙观,18589407692,1970-8-19,美食;篮球;足球,2018-8-6 9:44
    392456197008193000,张三,20,0,北京市,昌平区,回龙观,18589407692,1970-8-19,美食;篮球;足球,2018-8-6 9:44
    

4.2 分析

  • 任务:一个转换程序
    • 抽取:读取txt文件中的内容
    • 转换:不需要
    • 加载:将内容加载到一个Excel文件中

4.3 实现

  • step1:构建转换流程图
    • 新建一个转换的任务
    • 将输入【文本文件输入】和输出【Excel输出】拖入流程图的面板中
    • 选中文本文件输入,按住shift+鼠标 左键,拖拽到Excel输出的图标上
  • step2:配置输入
    • 关联文件
      • 文件
    • 配置文件的格式
      • 内容
    • 选择输出到下一步的数据
      • 字段
  • step3:配置输出
    • 输出目标文件
      • 文件
    • 预览输出的信息
      • 字段
  • step4:测试运行

5. 实战案例二

5.1 需求

  • 读取Excel文件中的数据,存储到MySQL中

5.2 分析

  • 任务:一个转换程序
    • 抽取:读取Excel文件中的内容
    • 转换:不需要
    • 加载:将内容加载到MySQL的表中
      • 数据库:kettle_demo
      • 表:t_user
        • 让kettle自行创建
        • 在kettle中只需要输入表名,点击SQL,就会创建该表

5.3 实现

  • step1:构建转换流程图
    • 新建保存
    • 定义输入【Excel输入
    • 定义输出【表输出
  • step2:配置输入
  • step3:配置输出
    • 将连接MySQL的工具放入到kettle的lib目录下
      • mysql-connector-java-8.0.13.jar
      • mysql-connector-java-5.1.46-bin.jar
    • 构建MySQL连接
  • step4:测试运行

6. 常用组件

6.1 共享数据库连接

  • 新建的数据库连接都只属于某一个转换程序
  • 如果你想让所有的转换程序都能使用这个连接,需要开启共享

6.2 表输入组件

  • 需求:将t_user中的数据,同步到t_user1这张表中
  • 分析:
    • 这是一个转换任务
    • 输入:读取t_user表中的数据
    • 转换:不需要
    • 输出:将结果写入t_user1表中

6.3 插入更新组件

  • 工作需求:将A表的数据同步到B表中,保证B表的数据与A表的数据一致,实现的是不断更新的操作
    • A表发生了更新,更新的数据也会同步到B表中
    • A表没有发生更新,即使程序运行,B表也不发生改变
    • 数据同步的过程:
      • 每次只同步更新的数据
      • 已经同步过的数据,就不会再进行同步
    • 工作中一般一天会同步一次,程序就每天执行一次
  • 解决:插入更新的输出组件
  • 功能:只会同步发生更新的数据,已经同步过的数据不会再次同步
  • 实现:将t_user表的数据同步到t_user2表中

7. Kettle Job

7.1 Job的功能

  • 转换:实现一种数据的转换处理,是一个转换任务
  • 作业:实现多个转换任务按照一定的规则运行,就是一个任务流
    • 时间规则:从00:10分开始,每5秒钟运行一次
    • 依赖规则:A成功了,就执行B
  • 功能:将多个转换根据彼此之间的 关系实现任务流运行

7.2 Job的开发

  • 需求:每5s就运行一个Kettle的转换任务
  • 实现:
    • 构建一个作业
    • 配置转换任务
      • 双击转换
    • 配置作业运行的规则
      • 双击start
    • 运行
  • 扩展:多个转换任务,按照时间以及顺序运行
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值