认识kettle

为什么要写kettle专栏?

在使用了kettle近5年的时间内,深深切切体会到kettle这个工具带来的工作便利性,尤其是对于java工程师来说,简直就是福利。本着开源精神,决定将自己多年的使用经验分享给爱好者们,希望同大家共同成长。

为什么要使用kettle工具?对于程序员来说,大部分工作就是用代码来解决业务问题,解决业务问题过程中最核心的莫非就是对于业务数据的处理。说白了,就是通过代码来处理数据,已达到解决业务问题的目的。

可见,程序员的主要工作其实就是处理数据。处理数据最令我们头疼的又是哪些问题呢,第一个问题就是数据格式,格式的差异性,也就是各种异构数据,这就要导致需要进行大量的编码来解决不同格式的问题(如,xml格式,json格式,EDI格式,txt文本格式等)。统一数据格式是很难做到的,那么除了进行硬编码之外,还有其他的方式吗?当然有,那就是使用kettle。处理数据第二个头疼的问题是什么呢,就是数据源来自不同的地方,可能是其他系统,也可能是本地文档(word,excel,txt等),也可能是其它类型的数据库(hbase,access,elasticsearch等),倘若这些不同数据源的数据要进行整合和格式统一,那就会带来大量的开发工作量,那么有没有其他的解决方案呢?当然有,那就是kettle。这些是kettle最基本的能力,更强大的用法会在以后的教程中详细讲解。

 kettle是什么?

  • ETL是什么

ETL(Extract-Transform-Load),即数据抽取、转换、装载的过程。它是一种思想,主要是说,从不同的数据源获取数据,并通过对数据进行处理(格式,协议等转换),最后将处理后的数据提供给其他系统使用。当然这个过程,就是软件研发,尤其是后端研发最核心的工作。

认识kettle_第1张图片 ETL过程
  • kettle概念

kettle,翻译为中文叫做水壶,显而易见,水壶不管壶里面装的是什么液体,最终都会从壶嘴平滑的流出来。就好比,不管水壶装的是什么类型的数据,最后都会通过壶嘴以特定的格式流出来。其实就是对ETL思想的一种实现,它是通过java语言编写,秉承ETL思想的工具。既然是此采用java实现的,那就肯定具有跨平台的特性。kettle官网地址

认识kettle_第2张图片 初始kettle​
  • kettle组成

kettle既然是一种工具,要处理不同数据源的异构数据,那就要求它能够进行图形化操作,在UI界面上对数据源进行数据治理,最终所有的图形化处理都要能够保存为kettle可识别的文件。

kettle主要生成两种类型的文件,一种转换文件,一种是任务文件,即:transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

这两种文件之间是可以相互调用的,已达到最终的数据清洗目的。

认识kettle_第3张图片 kettle开发工具
认识kettle_第4张图片 kettle转换
认识kettle_第5张图片 kettle任务

kettle使用场景(demo)

  • 场景一:获取rest接口数据并保存为文本文件

将rest接口作为数据源,将物联网数据上传到kettle文件中,供kettle进行转换处理,并将结果保存到txt文件中;从下图可以看出,有一个节点叫做获取参数,这个节点就是用来接收rest接口传递来的数据。还有一个节点叫做响应结果,这个节点是用来将遥感数据保存到txt文件中。

认识kettle_第6张图片 处理rest接口数据
  • 场景二:任务调度(周期性执行场景一)

如果想要周期性的执行转换,就需要采用任务调度的方式进行处理。针对场景一,对其进行任务调度。从下图可以看出,有一个节点叫做转换,转换节点配置的就是场景一的转换文件;还有一个节点叫做START,就是用来启动任务调度过程的。

认识kettle_第7张图片 任务调度过程

以上两个场景仅能作为demo级别的一个尝试,希望通过这两个场景能够引起大家的兴趣,之后会给大家详细介绍工作中真正的足够强大的使用场景;

总结

本篇通过介绍kettle的基本概念,kettle的基本组成,还有两个简单的使用场景,希望大家能够初步认识kettle,并且能够在遇到数据处理的问题时,能够想到kettle这个强大的工具;通过我五年的使用经验,真心希望大家和我一样把它用起来,为我们打工人的编码生活,增加一点乐趣。好了,在下一篇文章,我会讲解如何搭建kettle开发环境,如何使用kettle开发工具,如何完成一个helloworld转换和任务。敬请关注!

 

你可能感兴趣的:(kettle,java,编程语言,大数据,restful,经验分享)