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