数据处理流程_Kettle
- kettle的优势
- kettle的安装
- kettle的使用
- kettle的ETL流程例子
- kettle的优势
kettle是基于Java开发的jdk是必须安装的
kettle实现了数据流程拖拽实现的可视化界面
kettle对linux和windows都支持
- kettle的安装
1.安装jdk(版本要和kettle一致),配置环境变量,
2.启动spoon.bat (win) ./spoon.sh(linux)
- kettle的使用
1.简单介绍
kettle主要是两部分:job和transformation(转换)
1.job主要实现执行时间和执行顺序的配置,当然也串transformation。transformation是job的重要组件,job中是顺序执行可以设置部分并行
2. transformation:里面有许多组件,是并行
2.数据库的配置和共享
配置数据库(以oracle11.2的数据库配置为例)
1).找到ooracle的连接配置文件的位置(oracle的服务端安装位置下的product\11.2.0\dbhome_1\NETWORK\ADMIN中的 tnsname文件)找到要配置的数据库的信息
LIFERPT_KF_105 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = XXX.XXX.XXX.105)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = liferpt)
)
)
2).创建oracle的数据库链接
1、注意要将你需要连接的数据库类型的jar放到安装包的lib下
我将相关的jar包放在:E:\zxy\down_package\jar下
2.重新启动kettle,打开kettle环境,文件-》新建-》数据库连接(oracle的)
点击测试,测试成功,保存就建立好了数据库连接
如果你要配置mysql的数据库链接:配置方式如下
3).将数据库共享
打开kettle的主对象树-》DB连接-》数据库连接,选中共享,这样在其他的地方就能共享数据库的连接了
2. 测试job串行,测试转换的并发,测试job的并发
测试流程: 流程的脚本见,脚本中涉及的数据库,表完全可以换成自己的数据库中的任意表,
Job中所有的组件都是串行执行的,要想让某一部分并行操作:需要在并行节点的前一个节点上做如下操作:
右键选择Run next Entries in parallel
(注意:运行日志告诉我们,要特别注意无论是并行的job或者不是并行的job,就像电路一样,多条路径的操作到后期,只要任何一条通路走通,后面的步骤就会被执行一次,所以,如果后面的步骤不是阻塞等待全部组件执行完毕再执行,后续步骤被执行的次数等于组件执行的路径数量)
测试的例子:
3. 测试阻塞
网上没有找到job阻塞的好办法,迂回的解决方案是嵌套一层
4. 测试循环的流程
(查询表中的字段值,等于1的时候开始执行流程,不等于1,延迟5秒再查询表字段的值(循环测试))
Job:
注意的点:
Kettle中的 Js脚本,是检验的脚本,基本等同于Java中的js,但是由于涉及到校验,要设置返回状态,或者字段值的比对,如果不使用校验,只是使用一个简单的js执行一个程序,那么最好在脚本的最后加true;
kettle的循环有两种,上面的例子是自己控制的循环,还有一种就是kettle支持的设置转换的方式具体看
https://ask.hellobi.com/blog/yuguiyang1990/7041
当然看实际情况选择实现循环的方式
例如:
延迟5秒执行的js:
for(var t = Date.now();Date.now() - t <= 5000;);
true;
转换中:
5.附加linux使用中要注意的点
1.linux的图形化界面的使用 使用vnc简单点相当于搭建了个windows的界面
1). 新建用户kettle,并设置密码
2). Su - root 进入root用户下修改文件 vi /etc/sysconfig/vncservers
VNCSERVERS="1:root 2:kittle"
VNCSERVERARGS[1]="-geometry 1024x768 -alwaysshared -depth 24"
VNCSERVERARGS[2]="-geometry 1024x768 -alwaysshared -depth 24"
3). 修改新用户的界面展示
vi ~/.vnc/xstartup 添加:gnome-session &
4). 修改vnc的登录密码:
vncpasswd
5). 杀死启动的界面
Vncserver -kill :2
6). 启动
Vncserver :2 ///vncserver在对应的用户下可以不加端口
2. Kettle的jdk解压到、/usr/java 下要给对应的用户添加Jdk的配置
在~/.bash_profile中配相当于配在当前用户下。主要是配置在全局变量/etc/profile文件中kettle启动不了
3. SSH的使用
如果你要使用oracle的生成文件的工具,或者某些工具,在linux直接执行不出现问题但是在kettle的ssh却报错少....
你会发现用root用户执行就不出问题,其他的用户就出现问题,可能就是环境变量的问题了。
环境变量的设置有4中设置
1). root用户可以设置在/etc/profile文件中
2). 其他用户:~/.bash_profile :每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
3). 其他用户:~/.etc/bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.
4). 使用脚本:可以设置在脚本中
看到上面的介绍就知道使用ssh的调用将对应的配置信息写在~/.etc/bashrc和脚本中都是起作用的
例如:你要操作数据库,要配置数据库的连接信息:
export ORACLE_HOME=/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=liferpt
export PATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/bin
例如你要使用oracle的快速生成文件的的sqluldr2,如果你要找的包涉及到link,你可以一步步的找link看看包在那个文件目录中,配置LD_LIBRAPY_PATH就好将他添加到~/.bashrc中
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
- kettle的ETL流程例子
链接:https://pan.baidu.com/s/16YjdDYHMlb53FHCRDMRyfg
提取码:838x