kettle 调度脚本

本文介绍如何使用Kettle 6.1.0进行循环执行转换和作业,实现数据的增量采集,并通过Linux Crontab定时器调度脚本周期性执行这些任务。文中详细说明了如何设置日志目录、清理旧日志以及配置Cron任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、kettle6.1.0 循环执行采集转换,增量采集数据

1.循环执行转换,并将日志输出到知道目录下

2.以当天日期创建日志目录,例如2017-04-17

3.删除前天的日志(2天前的日志),只保留昨天和今天的日志,防止磁盘空间被过分占用

--------------------------------------------------------------------------------

#!/bin/sh

#Count task numbers
ret=$(cat /data/kettle/ZD119/tablename_zd119 | wc -l)

#counter
i=1

#get today date, example:2017-04-17
date_day=$(date -d "now" +%Y-%m-%d )

#get current timestamp, example:15:48:14
date_time=$(date -d "now" +%T)

#get 2 days ago date, date format:2017-04-15
date_2day_ago=$(date -d "2 days ago" +%Y-%m-%d)

#log directory
log_zd119_path=/data/kettle/ZD119/log/

#judge wether 2 days ago log exists, if 2 days ago log exists, then remove log
if [ -d "${log_zd119_path}${date_2day_ago}" ] ; then

    rm -rf "${log_zd119_path}${date_2day_ago}"

fi

#judge whether the directory exists
if [ ! -d "${log_zd119_path}${date_day}" ]; then
    mkdir -p ${log_zd119_path}${date_day}
fi

#Cycle execute collection task
while [ $i -le $ret ]
do
tablename=$(sed -n "$i,0p" /data/kettle/ZD119/tablename_zd119)
echo ${tablename}.ktr.${i}>>${log_zd119_path}${date_day}/zd119_tablename_${date_time}.log
pan.sh -file=/data/kettle/ZD119/com/${tablename}.ktr -level=basic>>${log_zd119_path}${date_day}/zd119_${date_time}.log
i=`expr $i + 1`
done

#remove zd119 2 days ago logs
#find ${log_zd119_path} -mtime +2 -type d -name * -exec rm -rf {} \;

-------------------------------------------------------------------------------------------

二、kettle6.1.0 循环执行采集作业,增量采集数据

1.循环执行作业,并将日志输出到知道目录下

2.以当天日期创建日志目录,例如2017-04-17

3.删除前天的日志(2天前的日志),只保留昨天和今天的日志,防止磁盘空间被过分占用

---------------------------------------------------------------------------------------

#!/bin/sh

#Count task numbers
ret=$(cat /data/kettle/ZDDW_HLW01/tablename_zddw_hlw01_com | wc -l)
i=1

#get today date, example:2017-04-17
date_day=$(date -d "now" +%Y-%m-%d )

#get current timestamp, example:15:48:14
date_time=$(date -d "now" +%T)

#get 2 days ago date, date format:2017-04-15
date_2day_ago=$(date -d "2 days ago" +%Y-%m-%d)

#zddw_hlw01 log directory
log_zddw_hlw01_path=/data/kettle/ZDDW_HLW01/log/

#judge wether 2 days ago log exists, if 2 days ago log exists, then remove log
if [ -d "${log_zddw_hlw01_path}${date_2day_ago}" ] ; then

    rm -rf "${log_zddw_hlw01_path}${date_2day_ago}"

fi

#judge whether the directory exists
if [ ! -d "${log_zddw_hlw01_path}${date_day}" ]; then

     mkdir -p ${log_zddw_hlw01_path}${date_day}

fi

#Cycle execute collection task

while [ $i -le $ret ]
do
tablename=$(sed -n "$i,0p" /data/kettle/ZDDW_HLW01/tablename_zddw_hlw01_com)
echo JOB_${tablename}.kjb.${i}>>${log_zddw_hlw01_path}${date_day}/zddw_hlw01_com_tablename_${date_time}.log
kitchen.sh -file=/data/kettle/ZDDW_HLW01/com/JOB_${tablename}.kjb -level=basic>>${log_zddw_hlw01_path}${date_day}/zddw_hlw01_com_${date_time}.log
i=`expr $i + 1`
done

#remove zddw_hlw01 2 days ago logs
#find ${log_zddw_hlw01_path} -mtime +2 -type d -name * -exec rm -rf {} \;

三、采用Linux crontab 定时器调度脚本,周期执行采集任务

3-1.调度要求

(1).循环周期10分钟

(2).开机运行crontab定时任务

3-2.crontab 使用

(1).编辑定时任务

#crontab -e

*/10 * * * * /bin/sh /data/kettle/ZD119/test_zd119.sh &
*/10 * * * * /bin/sh /data/kettle/ZDDW_HLW01/test_zddw_hlw01_com.sh &
*/10 * * * * /bin/sh /data/kettle/ZDDW_HLW01/test_zddw_hlw01_big.sh &

crontab 格式:* * * * * command

分别表示:分钟(0-59) 小时(0-23) 日(1-31) 月(1-12) 周(0-6) command(表示要执行的命令)

(2).常用命令

crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
其中:crontab [-u user] -e  编辑用户的当前crontab任务

        crontab [-u user] -l   列出用户的当前crontab任务

        crontab [-u user] -r   删除用户的当前crontab任务

        crontab [-u user] -i   删除用户的当前crontab任务之前提示

        crontab -c dir               指定crontab的目录
(3).启动/停止crontab任务

/etc/init.d/cron start/restart/stop/status

service cron start/restart/stop/status

(4).开机自启动

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息

usage: chkconfig [--list] [--type <type>] [name]
chkconfig --add <name>    ##添机管理服务
chkconfig --del <name>     ##删除管理服务
chkconfig --override <name>
chkconfig [--level <levels>] [--type <type>] <name> <on|off|reset|resetpriorities>

--------------------------------------------------------------------------------------------------------

chkconfig --list crond    查看当前任务的开机自启动级别

chkconfig crond on | off       开启开机自动

chkconfig --level 2345 crond on | off

(5).修改系统文件, 实现开机运行采集任务

vim /etc/rc.local

:/etc/init.d/crond restart

 

转载于:https://www.cnblogs.com/gusuchen/p/6728304.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值