Shell脚本自动化

        今天在写shell脚本实现自动化的时候,出现了一个让我无比恼恨的小问题,代码检查了一遍又一遍,甚至把编码集都尝试更换了,还是一直报错,最后无奈,一行一行的重写对照,结果你猜怎么着,问题是我没有把 '+' 跟后边的参数连在一起。

 报错的格式:

正确的格式:

        最起初实现shell脚本自动化的念头是在Mysql数据库与HIVE的ODS 与 DM层之间有大量的数据导入导出的操作,而又是一些参数的变化,比如数据库、数据表、时间的改变。因此,我写了几个shell脚本并配置到Oozie中设置成立定时导入、导出更新数据。

        对于shell脚本中的时间的改变,设置成可以手动输入和选择使用系统时间,下面的一个脚本是从Mysql到ODS的增量导入,诸如此类还有ODS到DWD的增量、DWD到DWB的增量等等

if [ $# == 1 ]; then
  date_str=`date -d $1 +'%Y-%m-%d'`
else
  date_str=`date -d '-1 day' +'%Y-%m-%d'`
fi

year_month_str=`date -d ${date_str} +'%Y-%m'`

year_str=`date -d ${date_str} +'%Y'`
month_str=`date -d ${date_str} +'%m'`
day_str=`date -d ${date_str} +'%d'`
month_str_2=`date -d ${date_str} +'%-m'`
quarter_str=$(((month_str_2-1)/3+1))

echo '======================================'
echo ${date_str}
echo ${year_str}
echo ${quarter_str}
echo ${month_str}
echo ${day_str}
echo ${year_month_str}
echo '======================================='   



sqoop import \
--connect jdbc:mysql://hadoop01:3306/nev \
--username root \
--password 123456 \
--query "select id, create_date_time, session_id, sid, create_time, seo_source, seo_keywords, ip, area, country, province, city, origin_channel, user as users, manual_time, begin_time, end_time, last_customer_msg_time_stamp, last_agent_msg_time_stamp, reply_msg_count, msg_count, browser_name, os_info, '${date_str}' as dt from nev.web_chat_ems_${year_month_str} where create_time between '${date_str} 00:00:00' and '${date_str} 23:59:59' and \$CONDITIONS" \
--hcatalog-database edu_ods \
--hcatalog-table web_chat_ems \
--fields-terminated-by  '\t' \
-m 1

wait

sqoop import \
--connect jdbc:mysql://hadoop01:3306/nev \
--username root \
--password 123456 \
--query "select fubiao.id, fubiao.referrer, fubiao.from_url, fubiao.landing_page_url, fubiao.url_title, fubiao.platform_description, fubiao.other_params, fubiao.history, '${date_str}' as dt from nev.web_chat_ems_${year_month_str} zhubiao join nev.web_chat_text_ems_${year_month_str} fubiao on zhubiao.id=fubiao.id and zhubiao.create_time between '${date_str} 00:00:00' and '${date_str} 23:59:59' and \$CONDITIONS" \
--hcatalog-database edu_ods \
--hcatalog-table web_chat_text_ems \
--fields-terminated-by  '\t' \
-m 1

        最终效果是使用了五个全量脚本、五个增量脚本配合Oozie实现了脚本自动化的效果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yangjiwei0207

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值