基于kettle实现数据清洗及数据同步

kettle工具简谈

Kettle 是 Pentaho 公司开发的开源 ETL (Extract, Transform, Load) 工具,全称为 Pentaho Data Integration (PDI),主要用于数据的抽取、转换、加载和清洗。

核心功能

数据抽取:从多种数据源(数据库、文件、API等)获取数据

数据转换:提供丰富的转换步骤进行数据清洗和处理

数据加载:将处理后的数据加载到目标系统

作业调度:支持复杂的工作流调度和任务编排

复制代码
附:文章结尾附kettle安装包,请自行下载

文章目录


kettle的数据清洗能力

Kettle 提供强大的数据清洗功能:

数据标准化:格式统一、大小写转换等

数据验证:空值检查、范围验证等

数据去重:基于关键字段去除重复记录

数据补全:默认值填充、查找替换等

数据拆分与合并:字段拆分、多表关联等

复杂计算:聚合、排序、排名等


kettle部署流程

1、添加kettle用户(使用普通用户部署)

(1)部署kettle环境时,尽量采用指定账号,切勿使用root等账号,避免出现误删情况。

(2)jdk部署目录及其下所有的文件都授予读可执行的权限 chmod 655 jdk文件部署的目录

(3)使用kettle账号部署

2、部署流程

(1)需要的包:

·jdk1.8 tar 包

·data-integration tar 包

(2)配置jdk变量(如果有的话,可跳过该流程)

#查询是否存在老版本java

bash 复制代码
rpm -qa |grep java 
rpm -e --nodeps
java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64(删除,如果有的话)
使用跟用户root ,在路径/usr/local目录下创建文件夹jdk8  全路径为 /usr/local/jdk8
命令 mkdir /usr/local/jdk8

将jdk1.8 tar包复制到该目录下,然后解包 tar -xzvf ./jdk-8u191-linux-x64.tar.gz

解压完成后,配置环境变量(文件为/etc/profile)

顺序 逐次 执行命令 例

bash 复制代码
echo ' export JAVA_HOME=/usr/local/jdk8/jdk1.8.0_191/' >> /etc/profile;
echo ' export JAVA_BIN=/usr/local/jdk8/jdk1.8.0_191/bin' >> /etc/profile;
echo ' export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile;
echo ' export CLASS
PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >>
/etc/profile;
echo ' export JAVA_HOME JAVA_BIN PATH CLASSPATH' >> /etc/profile;
source /etc/profile;
执行完成后,检验是否成功,执行
Java -version
如果出现
[root@localhost jdk8]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build
1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build
25.191-b12, mixed mode)
则说明安装成功

(3)、安装data-integration (这个过程开始使用kettle账号操作)

将data-integration 的tar 包或zip 上传到/home/kettle 文件夹下

(4)、 修改/data-integration/spoon.sh文件,增加启动的内存配置。一般设置初始及最大均为4G内存即可。(此时kettle服务已部署完成,部署对应的kettle任务)

cd /home/kettle/data-integration/

chmod +x *.sh

(5)、配置数据源

进入/home/kettle/data-integration/.kettle/目录,修改kettle.properties文件,配置数据源地址。

配置数据源 例mysql(密码要加密配置)

bash 复制代码
stat.database.ip=127.0.0.1
stat.database.name=test
stat.database.port=3306
stat.database.username=user_name
stat.database.password=pass_word 
2be98afc80eca948aa216b97ed8c6fc88

密码加密 切换到目录下(有特殊字符需要使用反斜杠转义)

原密码:123456789

加密命令:

sh encr.sh -kettle 123456789

会生成

3、kettle任务部署

(1)kettle整体目录结构(/home/kettle/)

bin目录:存放kettle执行shell脚本

0_kettle_environment_variable.sh:配置java_home、kettle-home、kettle脚本的文件目录、日志级别、日志路径

job目录:存放kettle任务文件,根据数据源存放不同目录

log目录:存入kettle运行日志

log_real_time目录:存放kettle实时同步任务运行日志

(2)任务部署

1、将kettle任务上传至job目录下的对应目录中

2、在bin目录下新建kettle任务执行脚本,设置日志级别,kettle任务入口文件、日志文件

3、添加定时任务

使用crontab-e命令添加定时任务

4、kettle使用的数据库表

kettle数据同步是将数据同步到stat库中的表中

(1)etl_task_config任务配置表

配置任务编码,任务执行时间,数据同步的开始时间,数据同步的结束时间

(2)etl_task_log 任务运行日志记录表

5、kettle任务开发

(1)kettle主体分为Transformation(转换)、job(作业)

(2)job是步骤流,每一个步骤,必须等前面的步骤执行完后面的步骤才可以执行

Transformation是数据流,对数据的同步、数据的处理

(3)kettle任务模板

kettle任务模板分为单库单表模板、分库分表模板

总结

Kettle 以其可视化界面、丰富的功能和活跃的社区支持,成为最流行的开源ETL工具之一,特别适合复杂的数据清洗和同步需求。

复制代码
[kettle安装包](https://pan.quark.cn/s/dc39ccc4c101)
相关推荐
东莞市云毅网络有限公司15 天前
监测问句清单去重:停用词表、数字归一与贪心聚类的参数取法
python·数据清洗·rag·企业知识库·文档解析
Helix25016 天前
Python数据分析实战:Pandas清洗豆瓣短评与情感分析完整指南
python·pandas·数据清洗·情感分析··snownlp·文本数据处理
星夜离尘5616 天前
MATLAB 清洗 CSV 采样日志:重复时间戳、无效行、分组统计与自动出图
开发语言·matlab·数据分析·数据清洗·csv
东莞市云毅网络有限公司16 天前
用 Python 给官网做字段级变更监控:快照、比对与变更清单
python·数据清洗·rag·企业知识库·文档解析
梅雅达编程笔记16 天前
15_综合实战全流程
pandas·数据清洗·seaborn·可视化分析·python数据实战·数据分析全流程·系列收尾
Patrick在香港19 天前
pandas 读 CSV 不报错 ≠ 读对了:四个默认参数翻车实测
pandas·数据清洗·数据类型·实测·read_csv
MoRanzhi120319 天前
第 3 篇 · 数据清洗与特征工程:从问题判定到特征构建
python·pandas·数据清洗·特征工程·缺失值处理·异常值检测·特征编码
东莞市云毅网络有限公司21 天前
AI 引用句逐条回指原文:让回答可回溯的校验实现
python·数据清洗·rag·企业知识库·文档解析
mattleeee24 天前
回测数据清洗:如何处理缺失K线和异常数据
数据清洗·k线·异常数据
for_ever_love__1 个月前
电商订单数据清洗实战——Pandas 处理缺失值、重复单与异常金额
python·数据分析·pandas·数据清洗