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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu18 Opencv3.4.12 viz 3D显示安装、编译、使用、移植

Opencv3.*主模块默认包括两个3D库 calib3d用于相机校准和三维重建 ,viz用于三维图像显示,其中viz是cmake选配。 参考: https://docs.opencv.org/3.4.12/index.html 下载linux版本的源码 sources。 查看cmake apt list --installed | grep…

代码随想录算法训练营Day 60 || 84.柱状图中最大的矩形

84.柱状图中最大的矩形 力扣题目链接(opens new window) 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 1 < heights.length <10^50 < hei…

数据库实验三 Sql多表查询和视图

数据库实验三 Sql多表查询和视图 一、Sql表二、在线练习 一、Sql表 www.db-book.com 二、在线练习 对所有表执行查询语句&#xff0c;查看有哪些数据。 select * from tableName; 一、执行以下查询语句&#xff0c;写出查询意图。 (1) select * from student,takes whe…

YOLOv7独家改进: Inner-IoU基于辅助边框的IoU损失,高效结合 GIoU, DIoU, CIoU,SIoU 等 | 2023.11

💡💡💡本文独家改进:Inner-IoU引入尺度因子 ratio 控制辅助边框的尺度大小用于计算损失,并与现有的基于 IoU ( GIoU, DIoU, CIoU,SIoU )损失进行有效结合 推荐指数:5颗星 新颖指数:5颗星 收录: YOLOv7高阶自研专栏介绍: http://t.csdnimg.cn/tYI0c …

Redis -- 介绍

1、NoSQL: 指的是非关系型数据库&#xff0c;主要分成四大类&#xff1a;键值存储数据库、列存储数据库、文档型数据库、图形数据库。 2、什么是Redis&#xff1a; Redis是一种基于内存的数据库&#xff0c;一般用于做缓存的中间件。 3、Redis的主要的特点&#xff1a; 1、Rd…

投标文件如何写【格式层面】

一、顶级标题的修改&#xff08;1级标题的修改&#xff09; 修改的内容&#xff0c;核心是样式多级序号&#xff1b; 样式解决&#xff1b;标题1&#xff0c;标题2&#xff0c;解决快速排版的问题 多级标号解决如1.1,1.2.1,1.3.4等类似的自动编号的规划设置&#xff0c;如果…

Oracle-客户端连接报错ORA-12545问题

问题背景: 用户在客户端服务器通过sqlplus通过scan ip登陆访问数据库时&#xff0c;偶尔会出现连接报错ORA-12545: Connect failed because target host or object does not exist的情况。 问题分析&#xff1a; 首先&#xff0c;登陆到连接有问题的客户端数据库上&#xff0c;…

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

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

Java大型电商项目——品优购(一)

视频教程&#xff1a;【黑马程序员】Java大型电商项目—品优购【配套源码笔记】_哔哩哔哩_bilibili源码下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1fECz5In_XCB-aW6ed6ZTbA 提取码&#xff1a;27xa 技术选型&#xff1a; 后端框架&#xff1a;SpringSprin…

spring-boot-admin-starter-server监控springboot项目

文章目录 场景实现具体操作展示 场景 监控三件套Prometheus、Grafana、Alertmanager 部署起来太复杂,如果公司没有运维而且项目很小就可以使用spring-boot-admin-starter-server替代。这个包使用起来还是很简单的, 下面就实现一个对springCloud项目的监控 实现 参考 项目 具体操…

redis-cluster集群(目的:高可用)

1、特点 集群由多个node节点组成&#xff0c;redis数据分布在这些节点中&#xff0c;在集群中分为主节点和从节点&#xff0c;一个主对应一个从&#xff0c;所有组的主从形成一个集群&#xff0c;每组的数据是独立的&#xff0c;并且集群自带哨兵模式 2、工作原理 集群模式中…

【SpringBoot篇】Spring_Task定时任务框架

文章目录 &#x1f339;概述&#x1f33a;应用场景&#x1f384;cron表达式&#x1f6f8;入门案例&#x1f38d;实际应用 &#x1f339;概述 Spring Task 是 Spring 框架提供的一种任务调度和异步处理的解决方案。可以按照约定的时间自动执行某个代码逻辑它可以帮助开发者在 S…