传参的问题: 参数问题 举例: a.kjb 里面调用了a.ktr 若a.kjb和a.ktr 的转换属性命名参数中都有参数 file_name #### 若在windows下运行kettle (通过spoon) a.ktr的file_name变量最终取值是与组件有关系,有的会取到a.kjb的变量值,有的会取到a.ktr的值 若ktr没有定义此参数,则取kjb的参数 #### 若在linux环境下运行:(/home/kettle/kettle7.1/kitchen.sh的形式) 如果命令后加参数 -param:job_date=$currenttime -param:file_name=a.txt则kjb和ktr会用此值 若不加参数,则ktr取得是自己的参数值,不会取到kjb的参数 若ktr没定义此参数,则取kjb的参数 #### kitchen.sh 多个参数 要使用多个-param来传递 传参的参数:1. 必须要在作业属性->命名参数中定义,否则会接收不到 2. 此参数无法覆盖系统环境变量 如果使用carte服务,则系统变量kettle.properties发生变化时,需要重启carte服务,否则不生效,不过用kitchen.sh的形式是生效的
关于carte一些简单命令记录:
启动:nohup ./carte.sh pwd/carte-config-master-18080.xml > cartetest.log 2>&1 &
停止: http://ip:18080/kettle/stopCarte/
浏览页面:默认账密 cluster/cluster http://ip:18080/kettle/status
调用kjb: http://ip:port/kettle/executeJob/job=xxx.kjb&job_date=20240101&processId=test000078
几个重要的参数:
注意:相关数据以及日志都是存于内存中的,所以要控制内存的大小,否则会报内存溢出
1. KETTLE_MAX_LOG_SIZE_IN_LINES=200 日志行数 :经过实验 超过的行数在carte里面会丢弃掉,比如上图中有四个任务,但日志量超过200行的会丢弃
2. KETTLE_MAX_LOG_TIMEOUT_IN_MINUTES=5 日志保留的时间:过了5分钟之后,kjb的作业还在,但是里面的日志全部消失了
3. KETTLE_CARTE_OBJECT_TIMEOUT_MINUTES=10 : 作业保留的时长,超过10分钟的作业就消失了
使用carte的jvm内存调整:
如下图所示:在使用kitchen.sh及carte跑任务的时候,jvm启动的内存是在spoon.sh(linux环境下)控制的,所以要结合自己的作业任务,调整jvm内存大小。
可以直接在spoon.sh更改也可以添加环境变量PENTAHO_DI_JAVA_OPTIONS (我是在kettle用户下改的环境变量文件 ~/.bash_profile或者~/.bash_rc,不过没生效)
以下更改没生效,我又注释掉了