KETTLE的使用以及自动化脚本的部署

工作中使用到的工具教程目录

  • ETL大数据工具Kettle


前言

一晃已经工作1年啦,想对工作中使用过的技术工具都做个总结,来和大家一起学习,现在把工作里使用比较多的大数据工具Kettle进行总结一下啦,因为这个工具在网上全面的教程也比较少,当时在学习使用上也踩了不少坑,现在和大家分享一下。


一、Kettle是什么?

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、 Unix.上运行,绿色无需安装,数据抽取高效稳定。也被称为Pentaho Data Integration,是一款功能强大且广泛使用的开源ETL(Extract, Transform, Load)工具。它提供了一套直观且易于使用的图形化界面,帮助用户在数据集成和转换过程中实现高效的数据处理。

在现代的商业环境中,数据的重要性越来越被重视。无论是从不同数据源中抽取数据,还是对数据进行清洗、转换和加载到目标系统中,Kettle都能提供强大的功能来满足这些需求。下面是关于工作中使用Kettle的总结:

  • 数据提取(Extract):Kettle提供了丰富的数据源连接器,可以连接各种数据库、文件、API等数据源,方便地从不同的数据源中提取数据。
  • 数据转换(Transform):Kettle提供了强大的数据转换功能,可以进行数据清洗、格式转换、字段计算、数据合并等操作,使得数据能够符合目标系统的要求。
  • 数据加载(Load):Kettle支持将处理后的数据加载到目标数据库、文件或数据仓库中,保证数据的准确性和完整性。
  • 可视化开发界面:Kettle提供了直观易用的图形化开发界面,通过拖拽和连接组件,可以快速搭建ETL流程,减少了编码的工作量。
  • 丰富的组件库:Kettle内置了大量的组件,包括输入输出组件、转换组件、转换步骤组件等,可以满足各种数据处理需求。
  • 灵活的调度和监控:Kettle提供了灵活的调度功能,可以根据需求定时执行ETL任务,同时还支持任务监控和错误处理,方便排查和修复问题。
  • 扩展性和定制化:Kettle支持通过编写插件和自定义组件来扩展其功能,可以根据具体业务需求进行定制化开发。
  • 社区支持和文档丰富:Kettle拥有庞大的开源社区,提供了丰富的文档、教程和示例,可以帮助用户快速上手和解决问题。

二、使用步骤

1.下载资源

百度网盘百度网盘    提取码:7777

官网Kettle官网地址

更多下载地址各版本下载链接

2.文件内容

加压后里面会有很多文件夹,现在大概来了解一下,里面使用最多的就是lib文件夹,因为需要放一些常用的数据库的驱动jar包。

 文件说明,里面使用最多的是spoon.bat,这个是win下UI界面的启动入口

 三、Kettle 安装部署

概述:我在工作中一般会遇到两种情况,WinServer服务器或者Linux服务器,由于Kettle是纯Java编写,安装步骤一样,规定好本身的安装路径解压文件就可以,win系统可以直接用UI页面进行操作,但是Linux系统一般没有可视化操作,我一般是在win系统电脑上进行UI操作,操作完后将Tran和Job通过连接工具如Xftp等将文件传入Linux对应的文件夹下,最后使用脚本执行操作,后面会进行详细讲解。综述下面以Win系统为例:  

  1. 安装 jdk,版本建议1.8及以上,我用的是1.8.0_361。
  2. 下载kettle压缩包,因kettle为绿色软件,解压缩到任意本地路径即可
  3. 双击Spoon.bat,启动图形化界面工具,就可以直接使用了。

这里可能会出现kettle页面一闪而过的问题,需要注意这几个点

  • 可能是因为jdk的版本太低,可以换个高一点的jdk版本在进行尝试(我当时是因为这个原因,好像1.8.0_2**不行)
  • 在确保jdk版本没问题的条件下,如果还是打不开,可能是电脑的内存不足,需要调整给Kettle的启动空间,可采取以下方法:使用记事本或者其他的编辑软件打开spoon.bat,找到以下代码,将其中的"1024"和"2048"改为"512",保存退出,重新打开spoon.bat即可正常运行。

四、连接数据库驱动配置

连接数据库是使用Kettle最重要的一步,后面的表输入,更新表都是需要基于数据库上面操作的,kettle可以连接市面上常见的各种数据库,常见的比如Oracle,Mysql, SqlServer等。但是在连接各个数据库之前,我们需要先配置好对应的数据库驱动,我这里有有些我工作中比较常用的数据库jar包,拿去直接用就可以。这里以mysql为例,给大家讲解kettle连接mysql数据库的过程。

1. 数据库驱动下载

一定要下载对应数据库版本,下面是我工作中常用到的一些版本

 2. 环境配置

1. 首先我们要将下好的jar包放到kettle 安装目录下面的lib文件夹下,然后重启kettle 的客户端Spoon.bat

 2. 重启Spoon客户端以后,我们就可以创建对应的数据库连接了,在转换视图的主对象树目录下,有个DB连接,右键然后选择新建,在打开数据库连接框里,填写正确的数据库信息,然后测试,测试无误后,可以保存此数据库连接,这里的几个参数需要注意,详情看图片

数据库连接tab的相关参数,填写完成后点击测试,连接成功后会出现如下的提示,如果提示其他的报错,大概率是数据库的驱动jar包出现了问题,可以参考上面的步骤,或者私信进行沟通。

3. 数据库连接默认只对本转换有效,换一个转换以后,这个连接就没法用了,还需要新建数据库连接,所以我们需要将建好的这个数据库连接进行共享下,共享以后,其他的转换也能用我们提前建好的这个数据库连接了。

五、开始简单转换工作

Kettle中基本就是两个文件格式,转换(tran)和作业(job),其中转换是处理基本逻辑的文件,里面包含着数据的清洗,流转规则等等。

1.新建一个转换。

根据上面的步骤连接完数据库后,便开始就进行转换工作,这里拿先从数据库里查询数据,然后插入到另一个数据库举例。

2.在转化中增加步骤

如图新增一个转换文件

这里我那user表作为查询表,usercopy作为插入表,里面初始化内容如下:

接下来在核心对象里面搜索表输入,新增步骤,然后控制台就会出现表输入的步骤,双击打开,可以进行具体内容的配置

按照图中的操作完成后,点击预览即可看到查询出来的数据:

做完查询后,要将查询到的数据进行数据转移,这个时候需要步骤是插入/更新,同理在上搜索到此步骤后进行双击会自动生成到控制台上,并且会自动连线,这个箭头线代表了数据的流向,将来步骤多的情况下可以自己进行配置,配置方法为按住Shift,然后点击一个步骤不松拖到另一个步骤上就可以成功连通,点击箭头线可以对其进行具体的操作,可以自行去实验,这里双击插入更新,进行具体的配置。

到此一个简单的转换就完成了,点击确定,回到控制台,点击左上角的运行按钮就可以一次性的启动此转换了,转换结果在页面中会有显示,成功会有绿色的标记,失败是红色的。此时我们再来看usercopy表,数据就已经进去了,到这个这个转换就已经完成啦。完成后进行保存,需要命名,这里很重要,这里的命名在后面的Job中需要使用到,我这里命名为转换.ktr

 六、开始简单JOB工作

作业项是作业的基本构成部分。如同转换的组件,作业项也可以用图标的方式展示。作业顺序执行作业项,必须定义一个起点。有一个「start」的作业项专门用来定义起点,一个作业只能定一个开始作业项。

 1.新增一个Job工作

        和上面新增Tran同理

 2.转Job中增加作业项

首先所有的Job都需要一个「start」入口,新建之后,在工作项处搜索start,双击生成在控制台里,然后点击start可以进行详情配置,包括定时任务,是否重复等等。

然后新增一个转换的作业项,这个作业项就代表着刚刚的我们新增的Tran工程,那如果有多个Tran工程,如何精确匹配到我们需要的呢,这里就需要指定刚才的文件名称。${Internal.Entry.Current.Directory}这个表示job的同文件夹内。

 3.启动Job

前面都弄完后,回到控制台点击左上角的启动,就会按照start里面配置的参数进行运行(我这里选择了重复定时任务,所有需要手动结束),此时前面的转换就会按照定时任务不断的去运行,这个时候可以去查看数据库或者日志是否正常。到此一个简单的demo就已经成功启动啦。

 七、Kettle其他的问题

在kettle的真正使用上,还有很多其他奇奇怪怪的问题,需要一点点去琢磨解决,这个工作用起来真的可以解决很多数据的问题,对于数据清洗非常重要,但是数据在网络的世界里阴晴不定,大家如果有问题的话,可以私聊我,我们可以一起进行讨论,我也会将我目前所知道的和大家分享,后期我会继续写kettle后续脚本的执行,定时脚本执行,以及linux系统中的使用等等,救赎之道,就在其中


2024-4-10

今天摸鱼时间更新下日常使用的kettle部署脚本,在按照上诉的步骤完成kettle的job后,可以使用脚本执行kettle的job,让它在后台运行并且记录日志。

win:

这里日志分为5个等级

Nothing
没有日志 不显示任何输出
Error
错误日志 仅仅显示错误信息
Minimal
最小日志 使用最小的日志
Basic
基本日志 缺省的日志级别
Detailed
详细日志 给出日志输出的细节
Debug
调试日志 调试目的,调试输出
Rowlevel
行级日志 打印出每一行记录的信息
默认为基本日志

我这边推荐实际应用使用Error级别

脚本如下:

@echo off
%1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exit
echo %date:~0,10%
echo %time:~0,5%
echo %time:~x,y%
set hour=%time:~0,2%
if %hour% LSS 10 (set hour=0%time:~1,1%)

set filename=%date:~0,4%%date:~5,2%%date:~8,2%_%hour%%time:~3,2%%time:~6,2%

forfiles /p "D:\kettle\pdi-ce-9.3.0.0-428\workspace\log" /s /m *.log /d -3 /c "cmd /c del /f @path"


D:
cd D:\kettle\pdi-ce-9.3.0.0-428\data-integration
kitchen /file D:\kettle\pdi-ce-9.3.0.0-428\workspace\dev-xy\内部环境数据同步.kjb /level Error /logfile D:\kettle\pdi-ce-9.3.0.0-428\workspace\log\%filename%.log
exit

Linux:

linux的执行脚本和win下的基本一致。

脚本代码如下:

#!/bin/sh

export JAVA_HOME=/opt/jdk1.8.0_131
export PATH=$JAVA_HOME/bin:$PATH
cd /usr/local/kettle/workspace


# Nothing 没有日志 不显示任何输出
# Error 错误日志 仅仅显示错误信息
# Minimal 最小日志 使用最小的日志
# Basic 基本日志 缺省的日志级别
# Detailed详细日志 给出日志输出的细节
# Debug 调试日志 调试目的,调试输出
# Rowlevel行级日志 打印出每一行记录的信息


KETTLE_PATH="/usr/local/kettle/data-integration/kitchen.sh"
DIR_PATH="/usr/local/kettle/workspace/dev"
JOB_NAME="内部环境数据同步"
LOG_LEVEL="Error"
LOG_FILE="/usr/local/kettle/workspace/log/log"
REP_NAME="dev"
CURRENT_TIME=`date +%Y%m%d` 

nohup  ${KETTLE_PATH} -rep=${REP_NAME}  -dir=/  -job=${JOB_NAME}  -logfile=${LOG_FILE}-${CURRENT_TIME}.log -level=${LOG_LEVEL} >/dev/null 2>&1 &

保存为.sh文件,然后记得要给这个脚本分配可执行权,才可以成功启动。

总结

后面会再进行总结的,如果有朋友对哪里有疑问或者不清楚的地方可以私聊我,我也会补充到这篇博客里去。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Kettle是一款国外开源的ETL工具,它可以通过使用Java脚本来完成对数据流的操作。Java脚本使用Java语言编写的代码,内置了许多可以直接使用的函数。在Kettle中,Java脚本的主程序入口是processRow()函数,它类似于Java中的main方法,用于处理数据流。Kettle中有两种脚本文件,分别是transformation和job。transformation用于完成针对数据的基础转换,而job则用于完成整个工作流的控制。因此,你可以在Kettle使用Java脚本来实现各种数据操作和转换。\[1\]\[2\] #### 引用[.reference_title] - *1* [Kettle8.2脚本组件之Java脚本](https://blog.csdn.net/sujiangming/article/details/115843390)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [JAVA调用Kettle脚本](https://blog.csdn.net/BUGdeQD/article/details/117733258)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [kettleJAVA脚本使用](https://blog.csdn.net/fsp88927/article/details/24380299)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值