pentaho(keetle)数据同步实践
pentaho(keetle)数据同步实践
1 pentaho简介
pentaho可读作“彭塔湖”,在keetle被pentaho公司收购后改名而来。
pentaho是一款开源ETL工具,纯java编写的C/S模式的工具,可绿色免安装,开箱即用。支持Windows、macOS、Linux平台。
pentaho有2个核心设计,即转换和作业。
转换是一个包含输入、逻辑处理、输出的完整过程,即ETL。
作业是一个提供定时执行转换的机制,即定时服务调度。
pentaho官网下载链接:Pentaho Community Edition Download | Hitachi Vantara

pentaho由主要四部分组成
- Spoon.bat/Spoon.sh :勺子,是一个图形化界面,可图形化操作转换和作业
- Pan.bat/Pan.sh : 煎锅,可用命令行方式调用转换
- Kitchen.bat/Kitchen.sh : 厨房,可用命令行方式调用作业
- Carte.bat/Carte.sh : 菜单,是一个轻量级web容器,可建立专用、远程的ETL Server
2 pentaho安装
由于是纯java编写,依赖jdk环境。所以需要先配置jdk环境,这里省略。
从官网下载pentaho安装包后,直接解压。

重点目录以及执行文件说明
- lib目录 : 这是依赖库目录,例如各个数据库的jdbc驱动,都放在此目录下
- logs目录 :这是转换和作业运行的默认日志输出目录
- simple-jndi目录 :这是各个数据库的JNDI连接信息的全局配置
- Spoon.bat/Spoon.sh :勺子,是一个图形化界面,可图形化操作转换和作业
- Pan.bat/Pan.sh : 煎锅,可用命令行方式调用转换
- Kitchen.bat/Kitchen.sh : 厨房,可用命令行方式调用作业
- Carte.bat/Carte.sh : 菜单,是一个轻量级web容器,可建立专用、远程的ETL Server
3 数据同步案例
这里使用
sqlserver到postgresql同步。在Windows平台上操作。
3.1 执行Spoon.bat文件,启动图形化界面

可以看到左侧只有作业和转换。
3.2 创建一个转换,右键,新建

左侧是一些转换插件。
3.3 创建一个数据源输入,展开输入,选择表输入

切换到主对象树,选择DB连接,连接数据源。
由于我这里是sqlserver同步到postgresql,所以需要创建sqlserver和postgresql的DB连接。
创建连接前,需要先下载sqlserver的 jdbc驱动
mssql-jdbc-12.2.0.jre8.jar和 postgresql的jdbc驱动postgresql-42.6.0.jar,我这里直接选的最新版。
sqlserver的连接

sqlserver的连接,如果选择JNDI则无法连接,目前猜测可能是驱动版本问题
postgresql的连接

点击测试,如果连接成功,则会弹框提示

3.4 编辑表输入

先选择数据库连接

点击获取SQL查询语句,获取数据表

选择一个数据表后,会提示是否选择全部字段,选择是


点击确定,一个表输入就做好了。
3.5 创建一个数据源输出
如果是全表覆盖同步,则选择表输出,因为这里是需要根据主键判断是否重复,重复则更新,否则就插入,因此这里选择 插入/更新
展开输出节点,选择 插入/更新,并将其拖入到右侧图形界面中,然后将表输入连线到当前节点,按住shift+鼠标左键
这里如果不先连线的话,在配置映射字段时,就无法获取源表字段,需要自行输入


双击进行编辑

点击确定后,一个转换就完成了

点击左上角的运行按钮,即可执行同步了。
Q1:这是一个单表转换,那如果需要一次同步多个表呢?
A1:那就继续按此步骤进行配置,多表转换配置完成后如下

Q2:那表数量很多,这么配置很费时间,有什么更好的办法么?
A2:有。可以编写脚本,正在学习中……
Q3: 前面的转换已经配置完成了,但是只能手动点击运行,能否定时自动运行?
A3:可以。继续看第4节。
4 定时服务
选择文件–>新建–>作业,即可创建一个作业。

在作业窗口,选择核心对象,展开通用,选择Start、转换、成功,分别拖入图形界面中,并按顺序连线

双击转换就,进行编辑,选择转换文件
无论转换、还是作业,都是以xml文件形式保存在本地

此时一个作业即配置完成,但是注意,还没达到定时运行的目的,继续配置
双击Start,对作业进行配置

配置完后点击确定,然后点击图形界面的运行按钮,定时服务即启动了

在日志输出窗口,可看到服务运行日志

至此,pentaho的定时数据同步已完成。
Q4: 定时服务开启后,这个程序窗口被关了或者说程序退出了,服务还运行吗?
A4:不会。由于是C/S模式,客户端服务端一体,进程退出即服务停止
Q5:那有类似后台服务的方式,悄悄运行呢,不被这个界面退出所终止服务?
A5:有。请看第5节。
5 以后台方式运行作业
在介绍中提到,有个Kitchen.bat/Kitchen.sh(厨房)的执行文件,它的作用就是用命令方式调用作业。由于是在Windows平台,所以选择Kitchen.bat执行文件。
打开控制台窗口,进入pentaho安装目录,即Kitchen.bat所在目录,执行如下命令
kitchen /file:{job file path} /level:Basic>>{log file path}
说明:
/file 参数指定 job文件
/level 参数指定日志级别,并写入指定的文件
指定日志文件后,控制台界面就不会输出日志,否则日志会在控制台输出,像下面这样

Q6:总开着一个控制台黑框,也不太好,窗口被关了,服务不也停止了吗?有什么更好的方式吗?
A6:是的。有。可以隐藏掉黑窗口,那么继续往下看。
5.1 隐藏控制台窗口
在Kitchen.bat同级目录下创建一个txt文本文件,输入如下内容
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
kitchen /file:"替换为job文件路径" /level:Basic>>"替换为日志文件路径"
然后以ANSI编码方式另存为.bat文件。用ANSI编码,是防止文件路径有中文出现乱码。
至此,一个完成的pentaho定时数据同步作业服务就完成了。
pentaho(keetle)数据同步实践的更多相关文章
- SSIS数据同步实践
SSIS数据同步实践 背景 在已初步验证不同实例下同构表数据同步方案之后,为了实现数据持续同步,需使用SSIS把之前的生成脚本和执行脚本的两个步骤组合在一起部署成包之后,通过JOB定时去执行: 测 ...
- 基于 MySQL Binlog 的 Elasticsearch 数据同步实践 原
一.背景 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品.订单等数据的多维度检索. 使用 Elasticsearch 存储业务数据可以 ...
- 基于MySQL Binlog的Elasticsearch数据同步实践
一.为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品.订单等数据的多维度检索. 使用 Elasticsearch 存储业务数 ...
- 美团DB数据同步到数据仓库的架构与实践
背景 在数据仓库建模中,未经任何加工处理的原始业务层数据,我们称之为ODS(Operational Data Store)数据.在互联网企业中,常见的ODS数据有业务日志数据(Log)和业务DB数据( ...
- DB 数据同步到数据仓库的架构与实践
背景 在数据仓库建模中,未经任何加工处理的原始业务层数据,我们称之为ODS(Operational Data Store)数据.在互联网企业中,常见的ODS数据有业务日志数据(Log)和业务DB数据( ...
- 大数据实践-数据同步篇tungsten-relicator(mysql->mongo)
// mongo)";digg_bgcolor = "#FFFFFF";digg_skin = "normal"; // ]]> // [导读] ...
- ElasticStack系列之十一 & 同步 mysql 数据的实践与思考
问题 1. jdbc-input-plugin 只能实现数据库的追加,对于 elasticsearch 增量写入,但经常 jdbc 源一端的数据库可能会做数据库删除或者更新操作.这样一来数据库与搜索引 ...
- MongoDB DBA 实践5-----复制集集群的数据同步和故障转移
(1)复制集集群的数据同步 1>主节点数据库test,在其中goods集合中加入一个文档. 2>在副节点中查看 注意:SECONDARY是不允许读写的,要使用rs.slaveOk()获得读 ...
- 阿里Canal框架(数据同步中间件)初步实践
最近在工作中需要处理一些大数据量同步的场景,正好运用到了canal这款数据库中间件,因此特意花了点时间来进行该中间件的的学习和总结. 背景介绍 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存 ...
- YonBuilder低代码开发实践:4行代码实现跨实体列表数据同步
提到增.删.改.查等数据维护,后端开发者们再熟悉不过了.传统的数据维护通过操作数据库的方式实现,步骤比较繁琐,需要通过Java代码实现数据库链接,然后编写SQL语句.编写实体,将想要的数据存到相应的数 ...
随机推荐
- 文心一言 VS chatgpt (6)-- 算法导论2.3 1~2题
一.使用图 2-4作为模型,说明归并排序在数组 A=(3,41,52,26,38,57,9,49)上的操作. 文心一言: 使用图 2-4作为模型,说明归并排序在数组 A=(3,41,52,26,38, ...
- Can't uninstall 'Pillow'. No files were found to uninstall.
Can't uninstall 'Pillow'. No files were found to uninstall. Pillow卸载不掉的解决办法 1.进入python所在路径,进入scripts ...
- 2023-05-20:go语言的slice和rust语言的Vec的扩容流程是什么?
2023-05-20:go语言的slice和rust语言的Vec的扩容流程是什么? 答案2023-05-20: go语言的slice扩容流程 go版本是1.20.4. 扩容流程见源码见runtime/ ...
- 洛谷P3368 【模板】树状数组 2-(区间修改,单点查询)
题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某区间每一个数加上 x: 求出某一个数的值. 输入格式 第一行包含两个整数 N.M,分别表示该数列数字的个数和操作的总个数. 第二行包含 N ...
- Netty实战(一)
目录 第一章 Java网络编程 1.1 Java NIO 1.2 选择器 第二章 Netty是什么 2.1 Netty简介 2.2 Netty的特性 2.2.1 设计 2.2.2 易于使用 2.2.3 ...
- linux 的 vi 命令详解
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...
- 代码随想录算法训练营Day40 动态规划
代码随想录算法训练营 代码随想录算法训练营Day40 动态规划| 343. 整数拆分 96.不同的二叉搜索树 343. 整数拆分 题目链接:343. 整数拆分 给定一个正整数 n,将其拆分为至少两个正 ...
- 大数据实战手册-开发篇之spark实战案例:实时日志分析
2.6 spark实战案例:实时日志分析 2.6.1 交互流程图 2.6.2 客户端监听器(java) @SuppressWarnings("static-access") pri ...
- 3 大数据实战系列-spark shell分析日志
1 准备数据源 文件格式: 访问时间\t用户ID\t[查询词]\t该URL在返回结果中的排名\t用户点击的顺序号\t用户点击URL 数据文件越大越好,至少100万行 2 启动任务 ./spark-sh ...
- SQL SERVER 查看表说明,字段属性
查询表字段属性,说明等: 1 SELECT 2 表名=case when a.colorder=1 then d.name else '' end, 3 表说明=case when a.colorde ...