pentaho(keetle)数据同步实践

1 pentaho简介

pentaho可读作“彭塔湖”,在keetlepentaho公司收购后改名而来。

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 数据同步案例

这里使用sqlserverpostgresql同步。在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)数据同步实践的更多相关文章

  1. SSIS数据同步实践

    SSIS数据同步实践   背景 在已初步验证不同实例下同构表数据同步方案之后,为了实现数据持续同步,需使用SSIS把之前的生成脚本和执行脚本的两个步骤组合在一起部署成包之后,通过JOB定时去执行: 测 ...

  2. 基于 MySQL Binlog 的 Elasticsearch 数据同步实践 原

    一.背景 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品.订单等数据的多维度检索. 使用 Elasticsearch 存储业务数据可以 ...

  3. 基于MySQL Binlog的Elasticsearch数据同步实践

    一.为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品.订单等数据的多维度检索. 使用 Elasticsearch 存储业务数 ...

  4. 美团DB数据同步到数据仓库的架构与实践

    背景 在数据仓库建模中,未经任何加工处理的原始业务层数据,我们称之为ODS(Operational Data Store)数据.在互联网企业中,常见的ODS数据有业务日志数据(Log)和业务DB数据( ...

  5. DB 数据同步到数据仓库的架构与实践

    背景 在数据仓库建模中,未经任何加工处理的原始业务层数据,我们称之为ODS(Operational Data Store)数据.在互联网企业中,常见的ODS数据有业务日志数据(Log)和业务DB数据( ...

  6. 大数据实践-数据同步篇tungsten-relicator(mysql->mongo)

    // mongo)";digg_bgcolor = "#FFFFFF";digg_skin = "normal"; // ]]> // [导读] ...

  7. ElasticStack系列之十一 & 同步 mysql 数据的实践与思考

    问题 1. jdbc-input-plugin 只能实现数据库的追加,对于 elasticsearch 增量写入,但经常 jdbc 源一端的数据库可能会做数据库删除或者更新操作.这样一来数据库与搜索引 ...

  8. MongoDB DBA 实践5-----复制集集群的数据同步和故障转移

    (1)复制集集群的数据同步 1>主节点数据库test,在其中goods集合中加入一个文档. 2>在副节点中查看 注意:SECONDARY是不允许读写的,要使用rs.slaveOk()获得读 ...

  9. 阿里Canal框架(数据同步中间件)初步实践

    最近在工作中需要处理一些大数据量同步的场景,正好运用到了canal这款数据库中间件,因此特意花了点时间来进行该中间件的的学习和总结. 背景介绍 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存 ...

  10. YonBuilder低代码开发实践:4行代码实现跨实体列表数据同步

    提到增.删.改.查等数据维护,后端开发者们再熟悉不过了.传统的数据维护通过操作数据库的方式实现,步骤比较繁琐,需要通过Java代码实现数据库链接,然后编写SQL语句.编写实体,将想要的数据存到相应的数 ...

随机推荐

  1. 2023-04-22:给你两个正整数数组 nums 和 target ,两个数组长度相等。 在一次操作中,你可以选择两个 不同 的下标 i 和 j , 其中 0 <= i, j < nums.leng

    2023-04-22:给你两个正整数数组 nums 和 target ,两个数组长度相等. 在一次操作中,你可以选择两个 不同 的下标 i 和 j , 其中 0 <= i, j < num ...

  2. 2021-02-05:给定一个数N,想象只由0和1两种字符,组成的所有长度为N的字符串。如果某个字符串,任何0字符的左边都有1紧挨着,认为这个字符串达标。请问有多少达标的字符串?

    2021-02-05:给定一个数N,想象只由0和1两种字符,组成的所有长度为N的字符串.如果某个字符串,任何0字符的左边都有1紧挨着,认为这个字符串达标.请问有多少达标的字符串? 福哥答案2021-0 ...

  3. Vue跨域详解

    碰到这种问题,其实你的接口已经通了,但是在页面上就是访问不通过. 你可以把API请求地址单独拎出来新开个网站打开看请求是否成功,成功,但是你的项目不通. 有那么几个可能吧: 1.请求头设置错误 hea ...

  4. 批处理bat and 汇编小技巧

    来自远古时期的汇编软件MASM是没有像现在一样的exe程序的(汇编萌新的认知),所以为了快捷,写一些bat来方便操作.([表情包]奇怪的知识增加了)哈哈哈 我现在是MASM的路径是D:\Masm64\ ...

  5. vue iview 单击table行变色 获取行数据

    用到两个事件: 代码如下: 1 <Table :columns="columns" :data="tableData" @on-row-click=&qu ...

  6. 常用的Java Enum JdbcType

    常用的Java Enum JdbcType ARRAY BIGINT BINARY BIT BLOB BOOLEAN CHAR CLOB CURSOR DATE DECIMAL DOUBLE FLOA ...

  7. jQuery控制图片墙自动+手动淡入淡出切换

    先来看一下效果:http://39.105.101.122/myhtml/Jquery/img_switch/img_switch.html(甄嬛的眼睛有木有变大) 添加一个div(class=con ...

  8. js实现图片切换效果

    用js实现点击按钮,图片切换的效果: 1 <div class="box" id="box"> 2 <div class="img_ ...

  9. uniapp企业微信web-view父子通信问题

    项目背景:开发工具为HBuilderX,框架为uniapp,开发移动端的Web应用,在企业微信中使用(自建应用),Web开发的应用,不是小程序. 需求:页面中用到<web-view>组件, ...

  10. 前端Vue加载中页面动画弹跳动画loading

    前端Vue加载中页面动画弹跳动画loading, 下载完整代码请访问uni-app插件市场址:https://ext.dcloud.net.cn/plugin?id=13091 效果图如下: 使用方法 ...