参考内容html
表输出详解java
学习思路linux
常见问题:web
设置变量操做只在job中有效,在transfer中无效
shell
参考文章vim
删除了该文中的对日期后的数据的删除,由于后面同步对比的时候,会补全该时间段的操做。windows
设置增量时间区间,对该时间内的数据作增量(包含该区域的deleted,inserted,updated作同步)缓存
1.设置全局变量,一个当天日期,一个时间间隔;
2.获取源表,目标表该时间段的数据,source_t ,target_t;
3.对比source_t ,target_t的数据 对比结果以下图;
4.对不一样结果产生不一样分支的操做
bash
kettle 中kitchen和pan的使用
kettle中有四个主要的部件分别是做业、转换、步骤、跳。其中做业和转换可以相互调用执行。每个转换中的一个执行单元叫作步骤,链接步骤之间的线叫作跳。oracle
在linux中咱们一般使用kitchen和pan执行做业和转换。kitchen用来执行做业,pan用来执行转换。具体语法以下:
./kitchen.sh /file:/data/jobname.kjb /level:Detailed >>/data/log.log
./pan.sh /file:/data/transformation.ktr /level:Detailed >> /data/t_log.log
1.spoon调度:
如图配置好,执行,到点自动执行
到点自动执行
2. 计划任务调度
d: cd D:\Kettle\pdi-ce-8.2.0.0-342\data-integration kitchen.bat /norep -file=C:\Users\Lenovo\Desktop\Kettle_test\cmd\test.kjb >>C:\Users\Lenovo\Desktop\Kettle_test\cmd\test.log exit
注意
在spoon里面执行不报错,在kitchen里面调度没出错可是没数据。
个人理解是下面的流程依赖上面的变量,两段应该都会执行,可是下面执行的时候没有获取到上面的变量数据。应该将其放在一条流程线上,这样更严谨
l
#######################linux 配置 kettle
这个过程也出了许多错,也是由于没有java基础吧,报错了也一时半会很差解决;好在本身都解决了。
###第一部分 配置java环境
#1.1 彻底卸载已有java环境 并安装1.8java sudo apt install openjdk-8-jdk #彻底卸载java apt-get update apt-cache search java | awk '{print($1)}' | grep -E -e '^(ia32-)?(sun|oracle)-java' -e '^openjdk-' -e '^icedtea' -e '^(default|gcj)-j(re|dk)' -e '^gcj-(.*)-j(re|dk)' -e 'java-common' | xargs sudo apt-get -y remove apt-get -y autoremove #清除配置信息: dpkg -l | grep ^rc | awk '{print($2)}' | xargs sudo apt-get -y purge #清除java配置及缓存: bash -c 'ls -d /home/*/.java' | xargs sudo rm -rf #手动清除JVMs: rm -rf /usr/lib/jvm/* #安装java sudo apt install openjdk-8-jdk ##1.2找到java安装目录 并配置java环境 #whereis java #ls -l file #看看是否是软链接 #/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java ##1.3 配置java环境 #配置文件 vim /etc/profile #whereis java #ls -l file #看看是否是软链接 #/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre #为jdk的安装目录 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
###第二步 开发kjb kjr文件 for linux
#思路:用到路径变量解决linux 和 windows path不同的状况,先在windows上开发,而后load到linux对应文件夹 执行
###第三步 执行
手动执行
#cd 到kitche目录 chmod +x *.sh #手动执行 ../data-integration/kitchen.sh -norep -file=./linux_test.kjb
#sh脚本执行;切记文件必须为ansic 编码;基础不牢 错误不断 哎!
#/usr/bin/bash exe_time=`date +'%Y-%m-%d%H%M%S'` cd /usr/local/kettle/jb_tr ../data-integration/kitchen.sh -norep -file=./linux_test.kjb -log=../kettle_log/${exe_time}kettle.log crontab -e */3 * * * * /bin/sh /usr/local/kettle/jb_tr/exe_linux_test.sh
完美!由于没有java的基础 ,linux 也不熟悉,犯了不少错误,最终都解决了。
没问题才怪! 头发都少了几根
上面这个sh脚本不能执行,这个crontab 尼玛坑了;
注意事项:我用的Ubuntu 16
① crontab的环境变量与shell里面的环境变量 独立(vi /var/log/cron.log)坑的一比; vi /var/log/cron.log #查看cron 运行日志,只能看到一个记录 vim /etc/crontab #设置好环境变 ②crontab source , cd 没法使用(这些命令是shell的,不是系统的不信你where is) ③回车都会报错,fuck !
wan.sh
crontab -e
此次真的完成了!最后这个linux调度我搞了一天!!!
果真仍是我java 和 linux太菜了、
设置链接编码:characterEncoding utf8
只有job能够发邮件。transfer不能够发邮件,而且配置smtp时密码是受权码 不是帐户密码