• Kettle 学习笔记


    一直用SSIS做ETL,越来越感觉这玩意不是亲生的.因此萌生换ETL工具的想法,不过Kettle社区版没什么调度系统,貌似错误处理也不是很方便,且先了解吧. 本文简略的记录了整个软件的使用流程.

    开始

    Kettle 的几个子程序的功能和启动方式

    Spoon.bat: 图形界面方式启动作业和转换设计器。
    Pan.bat: 命令行方式执行转换。
    Kitchen.bat: 命令行方式执行作业。
    Carte.bat: 启动web服务,用于 Kettle 的远程运行或集群运行。
    Encr.bat: 密码加密

    资源库

    资源库就是放置Metadata的地方了. 点CTRL -R可以显示资源库连接的窗口,没有的新建一个就行. 看了下论坛,都推荐用文件资源库 (使用了org.pentaho.di.repository.Repository 接口)
    image

    按 CTRL –E可以浏览所连接的资源库中的Metadata

    image
    做的作业,转换,连接 等保存后,直接可以在资源库中读取使用.

    image

    菜单项

    这里可以设置kettle运行时候的一些默认参数

    image

    这里也是类似

    image

    简单示例

    在Input里面拖个 Dtata Grid,在Output里面拖个 Text file output

    Data Grid里面输入部分数据

    image

    在Data Grid组件上悬停,然后点击红框按钮连接Text file output组件

    image
    双击 Text file output ,然后在Fields 页面点击Get Fields.获取字段,然后在File页中选择输出路径

    image

    运行


    最后点击运行按钮
    image

    在弹出来的对话框中直接点运行.

    image

    传输方式


    再托一个 Table output.连接的时候问你传输方式,根据需要选一个即可

    image

    也可以右击组件,选择传送方式

    image

    查看输入/输出的Metadata


    右击Text file output ,选择 Show input fields 可以查看输入的Metadata

    image

    双击Text file output,选择连接,指定表名,然后复选 Specify database fields , 然后点击Get fields按钮

    image

    此时我们数据库中并没有testa这张表,此时点击界面上的,SQL生成按钮,会为我们自动生成建表语句

    image

    错误输出

    再拖一个文本输出对象 Text file output 2 .然后连接 Table output , 连接选项,选择 Error handling of step
    image

    随后右击Table output 点击 Define error handing

    image
    设定相关字段名,此时改一下数据,如数据类型等,执行后就可以看到效果了.

    image

    常用控件

    Select values

    可以选择字段,设置数值格式等,不需要的删掉
    image

    image

    Add constants

    增加常量字段
    image

    Generate random value

    生成随机数,如果一想要一次生成多行数据,则右击选择,Change number of copies to start.(注意这里是生成多份哦.很可怕)

    image

    Filter rows

    过滤记录,不符合条件的扔掉,符合的输出
    image

    Calculator

    计算器.Calculation 里面有很多选项,选中以后指定对应字段即可

    image

    Merge Join

    表格连接

    image

    Join Rows (cartesian product) 笛卡尔输出

    image

    Table input

    image

    执行Select 语句,从数据库中获取数据.可以通过?或者${var}方式使用变量. 实际演示如下:

    0x01 拖一个Get System Info 组件,然后设置一个变量,类型是命令行参数1

    image

    0x02 Table input 写好语句后,勾选 Replace variables in script? ,然后在 Insert data from step 中选插入数据的步骤.(此处选择前面创建的Get System Info)

    image

    注: 其中 Enable lazy conversion 选项是提升性能用的. 如果使用了,获取数据不做数据转换.用到的时候再转 (延迟转换用 rs.getBytes(int) 某则用 rs.getString(int))

    0x03 在之个性步骤指定参数,就可以执行看到效果了.

    image

    执行

    远程执行

    远程执行需要执行Carte,他内嵌Jetty的http server .

    0x01 执行命令,启动http server
    Carte 192.168.1.10 2333

    0x02 在项目中新增子服务器

    image

    用户名密码都是cluster, 如果要修改可以至C:data-integrationpwdkettle.pwd 修改

    image

    0x03 执行

    选则远程执行,然后选择我们刚才建立的服务器即可

    image

    群集

    通过上面的步骤,我们可以多创建一台服务器.然后组合起来做成群集.其中有一台要设置为Master

    0x01 建立群集

    image

    image

    0x02 使用群集

    右击组件,然后选择Clusterings,选择刚才创建群集,

    image

    如果有组件使用了群集,那么执行的时候默认群集这个选项就选中了
    image

    命令行执行

    参数值格式  /参数名:值 或 -参数名=值  (建议第一种)

    0x01 新建一个作业

    image

    0x02 通过命令行执行

    资源库名称 ResConn,作业名称job ,路径在根目录下,其实不写也可以,日志文件 log.txt,日志级别 basic (日志默认保存在 java.io.tmpdir的临时目录中文件名类似spoon_XXX.log)

    .Kitchen.bat /rep:ResConn /job:job /dir:/ /logfile:c:/log.txt /level:basic

    另外可以直接把job依赖的文件导出成 zip,然后直接执行zip文件

    kitchen /file:c:/job1.kjb /export:c:/a.zip
    kitchen.bat /file:”zip:file:///c:/a.zip!job1.kjb”

  • 相关阅读:
    CLR via C#深解笔记三
    CLR via C#深解笔记二
    CLR via C#深解笔记一
    C#参考:Linq 概述
    JavaScript
    jQuery
    JavaScript
    云原生
    python模块----optparse模块、argparse模块 (命令行解析模块)
    python模块----pymysql模块 (连接MySQL数据库)
  • 原文地址:https://www.cnblogs.com/haseo/p/learning_kettle.html
Copyright © 2020-2023  润新知