ETL数据转换-PDI Kettle ETL工具数据转换工具

PDI Kettle ETL工具数据转换工具
A数据 ===》 B数据库 (可以是不同数据库、不同结构);定时同步
开源软件:可以自由定制插件
主流版本:Kettle9(已经支持jdk8~17)

一、Cettle/Pdi 介绍

java开发,可在windows、linux、mac运行,
安装中文版本,转换操作就简单了

介绍1:kettle中文网
介绍2:Kettle — 使用手册
介绍3:Kettle — Mac安装Kettle
介绍4:Pentaho Data Integration (PDI, also called Kettle)
介绍5:pdi kettle - CE
介绍6:github kettle pdi 使用文档

1.1 文件后缀说明

文件后缀 全名 中文名称
.ktr transformation转换 kettle转换任务,有输入、转换、输出
.kjb job作业 kettle转换作业,可以包含多个:转换、作业job; 有:start、成功; 可设置定时任务执行

1.2 kettle子组件

组件名称 作用 组件全名 说明
pan 执行转换 trans pan.bat、pan.sh
kitchen 执行作业job kitchen.bat、kitchen.sh
Spoon 图形化界面 Spoon.bat、Spoon.sh 重启之后,定时不会执行了;UI界面启动jvm参数这里配置
# 执行job任务、执行转换,类似
cd d:\soft\kettle\data-integration
kitchen.bat -file "D:\soft\kettle\任务文件\增量同步.kjb"
# 使用kitchen.bat和 span.bat的意义?
# 可关闭Span,通过 windows 执行计划、linux crontab 进行定时。

1.3 转换有哪些?

kettle是一个输入输出的流操作,在输入输出中间,可以对流拦截,做若干的转换、处理。
  1. 常量:对流增加常量字段;如:输入字段少,输出字段多,有需要对输出一个默认值。对流拦截,添加字段
  2. 获取系统信息:如,数据同步日期、更新日期,可以同这里获取到;对流拦截,添加字段
  3. 值映射:如把,男女、变成 1、2
  4. 字段选择:对输入流中的字段进行修改名称,精度
  5. 去除重复记录
支持的数据库 是否内置 参考
ClickHouse
Mongo
elasticsearch
Hbase kettle spoon连接hbase

1.4 自定义JDK版本

当本地安装多个jdk,不同软件需要使用,不同jdk版本,这里演示,手工设置jdk版本。
  1. 进入set-pentaho-env.sh文件
  2. 手工设置:JAVA_HOME取值
 # 显示:指定jdk版本
  # jdk17, 个别三方功能未适配,可能出现问题。
  #JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.0.4.jdk/Contents/Home
  # jdk17, 个别三方功能未适配,可能出现问题。
  JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_331.jdk/Contents/Home

ETL数据转换-PDI Kettle ETL工具数据转换工具_第1张图片

二、实战操作

2.1、实战一,入门:项目采集oracle的table、view到mysql表中

2.1.1 新建转换

2.1.2 表输入

ETL数据转换-PDI Kettle ETL工具数据转换工具_第2张图片

2.1.3 字段选择

ETL数据转换-PDI Kettle ETL工具数据转换工具_第3张图片

2.1.4 表输出

输出,如果需要增加字段、修改表名、到不同的数据库都是可以的。

ETL数据转换-PDI Kettle ETL工具数据转换工具_第4张图片

2.1.5 写日志

ETL数据转换-PDI Kettle ETL工具数据转换工具_第5张图片

2.1.6 Cettle 转换文件 ktr

ETL数据转换-PDI Kettle ETL工具数据转换工具_第6张图片

2.2、实战二,进阶 转换作业

2.2.1 job作业预览

ETL数据转换-PDI Kettle ETL工具数据转换工具_第7张图片
ETL数据转换-PDI Kettle ETL工具数据转换工具_第8张图片
ETL数据转换-PDI Kettle ETL工具数据转换工具_第9张图片
两个子转换

2.2.2 转换01:根据身份证插入/更新

ETL数据转换-PDI Kettle ETL工具数据转换工具_第10张图片
ETL数据转换-PDI Kettle ETL工具数据转换工具_第11张图片

2.2.3 转换02:按照手机号更新

同:01	

三、定时执行、增量更新设置

二种的是全量更新、手工点击运行进行执行;项目当中经常需要自动执行、增量更新。

四、实例文件

kettle-pdi-ktr - 采集数据示例脚本.zip

五、连接多种数据源

5.1 直连接clickhouse

Hello.

  1. Follow the link to https://github.com/biwed/PDI-clickhouse. There are drivers in the jdbc folder (Clickhouse-jdbc-0.1.50.jar driver version). The all contents of the jdbc folder must be copied to the folder …/data-integration/lib
  2. Restart PDI
  3. Connect using the “Generic Database”:
  • Custom connection URL: jdbc:clickhouse://IP:8123/database
  • Custom driver class name: ru.yandex.clickhouse.ClickHouseDrive
    ETL数据转换-PDI Kettle ETL工具数据转换工具_第12张图片ETL数据转换-PDI Kettle ETL工具数据转换工具_第13张图片

5.2 插件连接clickhouse

java代码链接Clickhouse github 官方jdbc demo:
官方 docs: ClickHouse Playground
DBeaver连接clickhouse(超详细图文教程)-自定义驱动
自定义Kettle pdi 驱动、
Kettle连接Clickhouse 自定义插件 支持pdi-ce8,pdi-ce9、
ETL数据转换-PDI Kettle ETL工具数据转换工具_第14张图片
ETL数据转换-PDI Kettle ETL工具数据转换工具_第15张图片

5.3 直连接elasticsearch

老张使用 kettle,实现:clickhouse到elasticsearc的写入  。
kettle8、9默认只能连接 es无认证的场景,需要认证,需要使用三方插件。
我们使用腾讯课堂,这位老师的插件,亲测可用。

Kettle实战100篇 第20篇 MySQL数据库导出到ElasticSearch、
ETL工具kettle之Java脚本+Elasticsearch bulk insert
参考 腾讯课堂:Kettle实战:ElasticSearch7+单条/批量写入,配置ES认证都在这了
ETL数据转换-PDI Kettle ETL工具数据转换工具_第16张图片
ETL数据转换-PDI Kettle ETL工具数据转换工具_第17张图片

xpack.security.user = elastic:123456账号:密码

5.4 Big Data MongoDb

5.5 连接mysql

总结:\data-integration\lib\ 
目录需要自己放上两个mysql jdbc驱动包:
mysql-connector-java-5.1.49+.jar: 适配图形界面:org.gjt.mm.mysql.Driver
mysql-connector-java-8.0.29+.jar: 适配通用连接:com.mysql.cj.jdbc.Driver
  1. 直接通过mysql选项进行连接,可能报错
    kettle中报org.gjt.mm.mysql.Driver 解决办法
    下载mysql jdbc 驱动到
    \data-integration\lib\mysql-connector-java-5.1.49.jar
    重启后,完美连接。
    说明:没想到kettle mysql的链接,竟然都没有捆绑mysql的驱动。
  2. 通过Generic Database通用数据库连接,连接的url 和 jdbc驱动 和java项目配置一模一样。可以先在java项目中连接之后,在用kettle测试。这里用的是8.0的驱动
    ETL数据转换-PDI Kettle ETL工具数据转换工具_第18张图片

ETL数据转换-PDI Kettle ETL工具数据转换工具_第19张图片

你可能感兴趣的:(运维体系,大数据)