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

Java开源ETL工具-Kettle

一、背景

        公司有个基于Kettle二次开发产品主要定位是做一些数据ETL的工作, 所谓的ETL就是针对数据进行抽取、转换以及加载的过程,说白了就是怎么对原始数据进行清洗,最后拿到我们需要的、符合规范的、有价值的数据进行存储或者分析的过程。

        一般处理ETL的工作有几种,对于程序员来说,最直接的就是撸代码,输入数据、处理、最后输出数据。  但是大家发现其实ETL的过程其实很多过程都能复用或者说组件都相对固定, 例如数据的输入,MySQL、Kafka、文件等等方式可以作为数据源输入,输出又比如输出到MySQL、HTTP请求、Kafka、生成文件等等。  如果每次都是这样重复撸代码也是比较浪费时间。 所以像ELK中对日志的处理, Logstash其实就能做数据清洗的工作,支持input、filter、output.  

        当然以上是代码形式实现,那么有没有相对简单入门的ETL开源工具呢? 最好是有可视化UI界面的。  因为有时候特别是产品经理或者一些没那么负责的ETL工作,通过可视化UI进行配置流程和参数的方式就能很快地对数据进行处理。  这个就是今天要介绍的ETL工具Kettle.

        Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、 Linux、 Unix上运行,绿色无需安装,数据抽取高效稳定。

        Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。

        Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。

        Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

        Kettle(现在已经更名为PDI,Pentaho Data Integration-Pentaho数据集成)。

二、安装与基本使用

1、基本安装

    1、必须安装jdk1.8以上的Java环境.

    2、官方下载网址: Pentaho Community Edition Download | Hitachi Vantara

    3、下载压缩包

       4、解压运行Spoon.bat,进入主界面

2、快速体验-CSV文件格式转XLS文件格式

        下面是一个快速体验的例子, 这里用到一个CSV输入组件作为数据源输入, 之后将处理完的数据(很简单,中间没有处理过程的组件), 直接将数据通过XLS组件输出,生成excel文件, 本次转换完成。

原csv文件内容:

1、拖入csv输入组件,将结果输出到XLS组件

2、配置csv组件相关信息

3、编辑excel输出组件需要提取生成的字段信息

4、crtl+s保存转换代码, 点击运行转换作业

5、查看执行结果与输出日志

6、查看生成的excel格式文件内容

3、kafka消费数据,提交到HTTP API接口

1、先准备源数据,将JSON数据写入kafka的topic

往kafka写入4条json数据,我们通过消费kafka拿到这几条数据,每条通过HTTP提交到目标接口

2、kafka输入组件、json处理组件、HTTP REST客户端组件

3、kafka组件配置信息

 可视化填写kafka地址、选择要消费的topic、填写consumer名称, Options还可以选择从头消费数据还是从最新末尾消费数据等其它参数。 消费完数据后交给下一个组件进行处理

4、提交到HTTP接口组件

也是填写URL地址、请求方式、要请求的字段信息.最后查看执行结果

三、总结

        总结一下使用下来的体验,  确实UI可视化界面(可视化编程)的这种方式很直观、也很方便, 做一些简单的ETL工作也得心应手,如果ETL数据的过程不是很复杂,那么我觉得使用Kettle也是没啥问题的。 

        但是对于复杂的ETL过程,使用Kettle我是感觉比较难受了,虽然,它支持引入脚本组件(java、javascript等编程语言插件)可以自定义对上游组件的输出数据进行自定义处理。 但是必须要非常熟悉Kettle的玩法才能把这个东西完明白,特别是数据流、数据格式,要不然玩自定义代码也是比较难以入手的。反正我自己用起来没那么爽,可能是我不太熟悉的原因。

        每个公司的每个产品、项目都不一样,需求也不一样,有些公司使用这个Kettle作为生产环境的ETL工具, 有些则不使用。  没有最好的技术产品,只有合适的技术方案选择,大家可以根据自己的实际情况选择合适的ETL工具和方法.

相关文章:

  • 一张图,了解美格智能高算力AI模组
  • 哈夫曼树你需要了解一下
  • C语言获取命令行选项(option/flag)和输入的内容的一种巧妙的办法
  • Rockchip平台rk3588源码下载编译(基于Android13)
  • 【搭环境】装Python3.8 open3d
  • 网络运维与网络安全 学习笔记2023.11.23
  • thingsboard3.6的mailConfigTemplateController错误
  • chatglm3部署使用
  • 网络运维与网络安全 学习笔记2023.11.22
  • 使用websocket获取thingsboard设备的实时数据
  • 贪心:leetcode2216 美化数组的最少删除数
  • Pickcode:教孩子们编码的新视觉语言
  • Python 使用SQLAlchemy数据库模块
  • logic-flow 使用过程中遇到的bug - 拖动节点到画布的时候,鼠标松开,节点不落在画布,仍旧跟着鼠标走
  • 【23真题】最后一套两电一邮,纸老虎偏多!
  • 分享一款快速APP功能测试工具
  • 30秒的PHP代码片段(1)数组 - Array
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • python 装饰器(一)
  • Python进阶细节
  • vuex 学习笔记 01
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 基于遗传算法的优化问题求解
  • 聊聊sentinel的DegradeSlot
  • 实战|智能家居行业移动应用性能分析
  • #每天一道面试题# 什么是MySQL的回表查询
  • #预处理和函数的对比以及条件编译
  • (06)Hive——正则表达式
  • (09)Hive——CTE 公共表达式
  • (10)STL算法之搜索(二) 二分查找
  • (14)Hive调优——合并小文件
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (附源码)springboot教学评价 毕业设计 641310
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转) Android中ViewStub组件使用
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .htaccess配置重写url引擎
  • .Net 知识杂记
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .Net8 Blazor 尝鲜
  • @Autowired 与@Resource的区别
  • @EnableConfigurationProperties注解使用
  • @ModelAttribute 注解
  • @ModelAttribute注解使用
  • [ C++ ] STL---stack与queue
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [2010-8-30]
  • [20160807][系统设计的三次迭代]
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计
  • [C#基础知识系列]专题十七:深入理解动态类型
  • [C++]unordered系列关联式容器
  • [CERC2017]Cumulative Code