博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kettle使用问题记录
阅读量:6298 次
发布时间:2019-06-22

本文共 1973 字,大约阅读时间需要 6 分钟。

hot3.png

1、使用命名参数、全局变量

  • 在.kettle/kettle.properties中可以定义全局变量,在转换中可以定义命名参数和位置参数,如果需要在转换的步骤设计中使用变量,可以通过${param_name}或者%%param_name%%的形式来获取值。(目前只在表输入的sql中使用成功,而且如果作为select和from之间的变量,需要放到双引号“”之间)
  • 在自定义插件的步骤中,可以通过BeseStep的getVariable(param_name)来获取值。

2、通过命令行运行转换或者任务

trans:    

windows: pan /rep etl /user admin /pass admin /trans transName,如果是ktr文件则使用/file参数

linux:./pan.sh /rep etl /user admin /pass admin /trans transName

job:

Linux: ./kitchen.sh-file:job.kjb -param:files.dir=/opt/files -param:max.date=2010-06-02 

Windows: Kitchen.bat -file:job.kjb “-param:files.dir=/opt/files”“-param:max-date=2010-06-02″

    关于传参数:

  • 在windows下需要使用双引号包含起来,比如:"/param:name=abc″或者/param:"name=abc″,否则不生效,这种方式传入的参数会替换job或者转换中定义的参数默认值
  • job上定义的命名参数可以传到子job或者转换中,如果是命令行运行job,命名参数(或者变量)必须至少在job的属性中定义才能有效
  • 通过命令行运行job:通过命名参数${paramName}方式,以及Java和js的getVariable("paramName")方式获取命名参数值时,转换中的同名参数默认值会覆盖父job中同名参数的默认值
  • 通过Kettle的UI桌面端运行job:通过命名参数${paramName}方式,以及Java和js的getVariable("paramName")方式获取命名参数值时,job中中的同名参数默认值会覆盖子转换中同名参数的默认值
  •  

3、【插件开发】Kettle数据类型及其java对象的映射关系

  •      * Number==1
  •      * String==2
  •      * Date==3
  •      * Boolean==4
  •      * Integer==5
  •      * BigNumber==6
  •      * Binary==8
  •      * Timestamp==9
  •      * Internet Address==10

4、关于windows下bigdata组件的配置文件路径问题

    如果在windows下的kettle中使用bigdata组件(比如hbase)时需要填写配置文件路径,则需要在具体文件路径的前面加上file:///,否则会报“java.net.UnknownHostException: E(具体盘符)”的错误,比如:

    file:///E:/Kettle/data-integration6.1/plugins/pentaho-big-data-plugin/hadoop-configurations/cdh55/hbase-site.xml

5、kettle操作hive

  •     首先必须启动HiveServer2服务。
  •     可以通过表输入输出插件来操作,如果用了Impala映射Hive,则可以用impala来做。
  •     表输入输出时,连接类型选择Hadoop Hive 2
  •     关键的地方:用户名需要是hdfs上hive仓库目录所有者权限的用户,密码可以不填

6、kettle的json解析插件使用

    kettle解析json使用的jsonpath语法,具体可以参考jsonpath官方介绍

  • 如果json字段不完整,可以用多个json插件来分别解析,这样不会因为不完整而出错
  • 如果解析数组,使用$.result[*]的形式

7、连接Oracle

连接Oracle时,如果是SID,则数据库的地方填写dbName即可;如果是ServiceName模式,则数据库的地方填写:/dbName(对于4.x版本kettle,可能ip前面也要加上两个斜杠//)。不然可能报如下类似的错误:

ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connection descriptor 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/nivalsoul/blog/1057797

你可能感兴趣的文章
/etc/fstab,/etc/mtab,和 /proc/mounts
查看>>
Apache kafka 简介
查看>>
socket通信Demo
查看>>
技术人员的焦虑
查看>>
js 判断整数
查看>>
mongodb $exists
查看>>
js实现页面跳转的几种方式
查看>>
sbt笔记一 hello-sbt
查看>>
常用链接
查看>>
pitfall override private method
查看>>
!important 和 * ----hack
查看>>
聊天界面图文混排
查看>>
控件的拖动
查看>>
svn eclipse unable to load default svn client的解决办法
查看>>
Android.mk 文件语法详解
查看>>
QT liunx 工具下载
查看>>
内核源码树
查看>>
AppScan使用
查看>>
Java NIO框架Netty教程(三) 字符串消息收发(转)
查看>>
Ucenter 会员同步登录通讯原理
查看>>