windows环境kettle使用及linux环境要注意的问题

  kettle是基于Java开发的jdk是必须安装的

  kettle实现了数据流程拖拽实现的可视化界面

  kettle对linux和windows都支持

  kettle主要是两部分:job和transformation(转换)

      job主要实现执行时间和执行顺序的配置,当然也串transformation。transformation是job的重要组件,job中是顺序执行可以设置部分并行

     transformation:里面有许多组件,是并行

kettle的安装比较简单:安装jdk(版本要和kettle一致),配置环境变量,启动spoon.bat (win) ./spoon.sh(linux)

 可能遇见的问题:

    1:数据库的配置和共享

       配置数据库(以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的)

   windows环境kettle使用及linux环境要注意的问题

点击测试,测试成功,保存就建立好了数据库连接

如果你要配置mysql的数据库链接:配置方式如下

windows环境kettle使用及linux环境要注意的问题

3).将数据库共享

   打开kettle的主对象树-DB连接-数据库连接,选*享,这样在其他的地方就能共享数据库的连接了


2.  测试job串行,测试转换的并发,测试job的并发

   测试流程: 流程的脚本见,脚本中涉及的数据库,表完全可以换成自己的数据库中的任意表, 

   windows环境kettle使用及linux环境要注意的问题

windows环境kettle使用及linux环境要注意的问题

Job中所有的组件都是串行执行的,要想让某一部分并行操作:需要在并行节点的前一个节点上做如下操作:

右键选择Run next Entries in parallel

(注意:运行日志告诉我们,要特别注意无论是并行的job或者不是并行的job,就像电路一样,多条路径的操作到后期,只要任何一条通路走通,后面的步骤就会被执行一次,所以,如果后面的步骤不是阻塞等待全部组件执行完毕再执行后续步骤被执行的次数等于组件执行的路径数量

测试的例子:

 windows环境kettle使用及linux环境要注意的问题

3.  测试阻塞

网上没有找到job阻塞的好办法,迂回的解决方案是嵌套一层

4. 测试循环的流程

(查询表中的字段值,等于1的时候开始执行流程,不等于1,延迟5秒再查询表字段的值(循环测试))

  Job:

   windows环境kettle使用及linux环境要注意的问题

注意的点:

     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;

  转换中:

  windows环境kettle使用及linux环境要注意的问题

kettle完整的数据加工流程见github https://github.com/smiledip/kettle

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. Kettlejdk解压到、/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 shellbash信息,当登录时以及每次打开新的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