好久没更新博文,最近临近离职,事情少了,有空停下来总结总结这段时间的东西。 今天先记录下Kettle环境变量的应用。
一个好的环境变量的使用,在业务变更或者环境变动后,只需要很少工作量的修改即可完成。我们把变量分成系统环境变量和业务变量,系统环境变量是指那些在ETL中指定的系统级资源配置,如数据库信息、日志文件路径等等,这些变量一旦设定,不会经常变动;业务变量指跟当前ETL执行处理的内容有关,如日期、产品ID等等,跟运行时有关。开始我们很容易的会想到将经常变动的设为业务变量,在运行时通过参数传入,而往往忽略那些不常变动的内容被写死,一旦遇到环境迁移或者像增加udf的自定义(这个可用在数据库连接高级设置中,在连接成功后先执行若干SQL,后边才执行业务SQL,会在后边做详细点的介绍),就需要做大量更新配置工作。
系统环境变量可设置到 $HOME/.kettle目录下的kettle.properties中,但是在多工程ETL服务器上这样的设置容易导致混淆,这时可以把每个工程中的系统变量提取到当前工程kettle配置的目录下,如我们有bi、dw、finance等多个工程,在每个工程目录下建common目录作为公共配置目录,再将数据库信息配置文件db.properties放到该目录下,并增加一个transformation来读取该配置文件,然后解析文件中的键值对,最后将这些键值对设置成系统变量,如下三个步骤:1. 读取文件内容,根据“=”进行K-V分隔;2. 保留key、value,去除其他有步骤1产生的字段;3.通过javascript将k-v设置成环境变量 (这里要感谢下Jayon同学贡献的transformation)
读取文件配置
通过selected插件只保留key和value字段
通过javascript动态将k-v设置成系统变量
这样,就可以在后边的transformation中的数据库连接中直接使用db.properties 中定义好的变量,一但环境发生变动(如服务器迁移等),只需要修改配置文件即可。
本地测试小技巧:可以根据负责工程的内容,将使用到的配置变量copy到本地$HOME/.kettle/kettle.properties中,在启动spoon后会自动加载kettle.properties中的变量,这样就可以无障碍在本地进行测试了。
接下来说下数据库连接的高级配置中,在连接成功后执行的SQL如何配置。
在数据库连接成功后,我们经常需要对当前session设置一些内容,如Mysql设置字符集set names gbk; Hive中定义自定义函数,等等;因为Table Input插件中的SQL填写框中只能写一条当前业务SQL,这些对session预设置的内容,可以放到高级选项中。
如上图,我们定义了好多自定义函数来实现我们自己特有的业务逻辑;配置到这里是没问题的,但是这样写死,一旦以后项目的包名规则重构,就需要全部逐个进行进行修改kettle配置。其实这个预处理也可以定义为变量,虽然UI边上没有可使用变量的小图标。
这里变量的定义需要注意一点,在properties文件定义中,换行符意味着当前值的结束;为了阅读方便,我们还是有必要每条SQL写在一行或者多行上,换行是需要加转义符“\",如下
HIVE_PRE_SQL = add jar /data/lib/java/hive/udf/Hive_UDF.jar; \
add file /data/lib/java/hive/udf/GeoIP.dat;
相关推荐
kettle使用,用来各个数据库之间ETL数据抽取,功能比较全面。
内容概要:ETL之kettle包含26张PPT,kettle安装、使用、如何连接等,使用PDI9.2演示、什么是ETL、什么是Kettle、kettle安装、kettle目录结构、转换和作业、kettle操作、数据库连接、注意事项。 适合人群:具备一定...
《ETL数据整合与处理(Kettle)》教学教案 —03记录处理.pdf《ETL数据整合与处理(Kettle)》教学教案 —03记录处理.pdf《ETL数据整合与处理(Kettle)》教学教案 —03记录处理.pdf《ETL数据整合与处理(Kettle)》教学教案 ...
ETL工具 ,基于Kettle实现的Web版ETL工具,实现简单的数据抓取功能
kettle设置循环变量,控制循环作业;kettle设置循环变量,控制循环作业.
《ETL数据整合与处理(Kettle)》教学教案 —02源数据获取.pdf《ETL数据整合与处理(Kettle)》教学教案 —02源数据获取.pdf《ETL数据整合与处理(Kettle)》教学教案 —02源数据获取.pdf《ETL数据整合与处理(Kettle)》...
Kettle这个ETL工具集,它允许你抽取、同步来自不同数据库的数据,通过提供一个图形化的客户端来进行操作。该资源是各种版本文档,有需要的可以自行下载。
kettle变量参数设置详解文档!!!!!!欢迎一起探究
Kettle是业界比较认可的开源Etl工具
《ETL数据整合与处理(Kettle)》教学教案 —04字段处理.pdf《ETL数据整合与处理(Kettle)》教学教案 —04字段处理.pdf《ETL数据整合与处理(Kettle)》教学教案 —04字段处理.pdf《ETL数据整合与处理(Kettle)》教学教案 ...
kettle8.3.0[可以在Windows、Linux、Unix上运行]的版本,提供了网盘下载地址。
ETL数据整合与处理(Kettle)教案.rar
自己使用一段时间kettle的总结,包含基本应用,定义变量,hadoop,集群,资源库等内容。以及曾经碰到的一些坑
Kettle是一款国外开源的ETL工具,它是纯java语言编写,可以在Window、Linux、Unix上运行,绿色无需安装解压即可使用。kettle的中文名称叫水壶,kettle的原始开发团队,他们希望把各种数据放到kettle这个数据的水壶里...
kettle3不多说了,一直在用的,开源的ETL工具,3的版本
kettle(ETL工具)mysql 5.7 数据库的驱动包,放到data-integration\lib目录中即可
ETL工具Kettle用户手册5.0,开源etl工具kettle,Java源码.zip
kettle通过在job中变量来实现循环的例子:首先从文本文件读取表名,然后循环一个个表读取数据,其中最开始的文本文件输入表名可以改为从其他地方输入(比如表输入,网络请求等)
oralcle,etl工程师面试题锦集,dba资料,Oracle入门资料等。。