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工具和方法.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值