Java开源ETL工具-Kettle

news2024/11/18 17:29:02

一、背景

        公司有个基于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工具和方法.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1241880.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Vue入门篇】基础篇—Vue指令,Vue生命周期

🎊专栏【JavaSE】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 文章目录 🍔Vue概述🎄快速入门🌺Vue指令⭐v-…

首批!创邻科技入选《图数据库金融应用场景优秀案例》

11月11日,“全球金融科技中心网络年会”在第三届全球金融科技大会暨第五届成方金融科技论坛上成功在京举办。会上,北京前沿金融监管科技研究院发布了基于国际标准组织——国际关联数据基准委员会(LDBC)的《图数据库金融应用场景优…

vivado联合modelsim测试覆盖率

(1)配置环境 安装modelsim和vivado。点击vivado菜单栏中的tools,在下拉选项中选择compile simulation libraries。simulator选项选择:modelsim simulator。compile library location表示编译库存放的路径。simulator executable p…

CSGO搬砖干货,全网最详细教学!

CSGO游戏搬砖全套操作流程及注意事项(第一课) 在电竞游戏中,CSGO(Counter-Strike: Global Offensive)被广大玩家誉为经典之作。然而,除了在游戏中展现个人实力和团队合作外,有些玩家还将CSGO作为…

前向传播与损失函数

在机器学习和深度学习中,前向传播和损失函数是两个关键概念。它们在神经网络的训练过程中起着重要的作用,帮助模型学习和优化参数。 一、前向传播 前向传播是机器学习和深度学习中一种信息传递的过程。在神经网络中,前向传播指的是将输入数…

【追求卓越10】算法--跳表

引导 在上一节中,我们学习到二分查找,惊叹于它超高的效率(时间复杂度为O(logn))。但是二分查找有一个局限性就是依赖于数组,这就导致它应用并不广泛。 那么适用链表是否可以做到呢?答案是可以的。只不过要复…

c语言:回文字符串

题目: 思路: 创建一个字符数组,然后判断字符串长度,用循环,看对应字符是否相等,相等则输出,不相等则将对应字符ascll较大的改成ascll较小的(题目要求字典最小的情况)。…

【MySQL】内连接和外连接

内连接和外连接 前言正式开始内连接外连接左外连接右外连接 前言 前一篇讲多表查询的时候讲过笛卡尔积,其实笛卡尔积就算一种连接,不过前一篇讲的时候并没有细说连接相关的内容,本篇就来详细说说表的连接有哪些。 本篇博客中主要用到的还是…

WifiManager的getConnectionInfo被弃用了?快来使用ConnectivityManager获取更全的网络信息吧

前言 最近在使用flutter写桌面端的一个adb工具,可以使用adb命令无线连接设备,需要电脑和手机在同一局域网内,但是需要手机的ip地址。于是我想到写一个android桌面小组件,点一下就获取WiFi的ipv4地址并显示出来,先去找…

提升性能测试效率:JMeter中的用户自定义变量!

前言 在测试过程中,我们经常会碰到测试服务地址有改动的情况,为了方便,我们会把访问地址参数化,当访问地址变化了,我们只需要把参数对应的值改动一下就可以了。 一:添加配置元件-用户定义的变量&#xff…

P8599 [蓝桥杯 2013 省 B] 带分数(dfs+全排列+断点判断)

思路&#xff1a;1.深度枚举所有排列情况 2.设置为每个排列设置两个断点&#xff0c;分为三部分&#xff1a;a,b,c 3.转换为乘法判断条件&#xff0c;满足加一 代码如下&#xff1a;&#xff08;可用next_permutation全排列函数代替dfs&#xff09; #include<iostream>…

精通Nginx(18)-FastCGI/SCGI/uWSGI支持

最初用浏览器浏览的网页只能是静态html页面。随着社会发展,动态获取数据、操作数据需要变得日益强烈,CGI应运而生。CGI(Common Gateway Interface)公共网关接口,是外部扩展应用程序与静态Web服务器交互的一个标准接口。它可以使外部程序处理浏览器送来的表单数据并对此作出…

TypeScript 学习笔记 第三部分 贪吃蛇游戏

尚硅谷TypeScript教程&#xff08;李立超老师TS新课&#xff09; 1. 创建开发环境 创建工程&#xff0c;使用学习笔记的第二部分安装css部分 npm i -D less less-loader css-loader style-loader对css部分处理&#xff0c;能够运行在低版本浏览器 npm i -D postcss postcss…

数据结构与算法编程题14

设计一个算法&#xff0c;通过一趟遍历在单链表中确定值最大的结点。 #include <iostream> using namespace std;typedef int Elemtype; #define ERROR 0; #define OK 1;typedef struct LNode {Elemtype data; //结点保存的数据struct LNode* next; //结构体指针…

每日一题 1410. HTML 实体解析器(中等,模拟)

模拟&#xff0c;没什么好说的 class Solution:def entityParser(self, text: str) -> str:entityMap {&quot;: ",&apos;: "",>: >,<: <,&frasl;: /,&amp;: &,}i 0n len(text)res []while i < n:isEntity Falseif …

【从入门到起飞】JavaSE—多线程(3)(生命周期,线程安全问题,同步方法)

&#x1f38a;专栏【JavaSE】 &#x1f354;喜欢的诗句&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f354;生命周期&#x1f384;线程的安全问题&#…

opencv-Otsu‘s 二值化分割

Otsu’s 二值化是一种自适应的图像阈值选择方法&#xff0c;它通过最小化类内方差和最大化类间方差来确定一个最佳的阈值。该方法由日本学者大津展之&#xff08;Otsu&#xff09;于1979年提出&#xff0c;广泛用于图像分割。 该算法的核心在于前景与背景图像的类间方差最大 在…

PC8223(CC/CV控制)高耐压输入5V/3.4A同步降压电路内建补偿带恒流恒压输出

概述 PC8233&#xff08;替代CX8853&#xff09;是一款同步降压调节器,输出电流高达3.4A,操作范围从8V到32V的宽电源电压。内部补偿要求最低数量现成的标准外部组件。PC8233在CC&#xff08;恒定输出电流&#xff09;模式或CV&#xff08;恒定输出电压&#xff09;模式&#x…

HarmonyOS元服务开发实战—端云一体化开发

还记得我第一次接触arkui还是在22年的9月份&#xff0c;当时arkui还在一个比较初试的阶段。时隔一年再见方舟框架&#xff0c;它已经发生了令人瞩目的变化&#xff0c;不得不说华为方舟框架在更新迭代的速度已经遥遥领先。新的功能和性能优化让这个框架更加强大和灵活&#xff…

【实用】PPT没几页内存很大怎么解决

PPT页数很少但导出内存很大解决方法 1.打开ppt点击左上角 “文件”—“选项” 2.对话框选择 “常规与保存” &#xff08;1&#xff09;如果想要文件特别小时可 取消勾选 “将字体嵌入文件” &#xff08;2&#xff09;文件大小适中 可选择第一个选项 “仅最入文档中所用的字…