定时自动执行Sqoop及Hive命令

上一篇文章中介绍了手动输入命令方式,单步执行Sqoop及Hive命令《通过sqoop进行mysql与hive的导入导出》。本文主要介绍通过编写shell命令及定时执行(crontab)方式,定时自动执行Sqoop及Hive命令。

编写Shell批量执行命令

  • 在/usr/bigdata/timersh目录下创建一个shell脚本(如:sqooptimer.sh),内容如下:
#!/bin/sh

#将mysql表数据导入hive
sqoop import --connect jdbc:mysql://192.168.213.1:3306/casedb  --username root --password root --table category --hive-import --create-hive-table -m 1

#将hive表中的t_class表,执行查询过滤后,结果输出到HDFS的 /output/t_class目录
hive -e "INSERT OVERWRITE DIRECTORY '/output/t_class'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
SELECT * FROM t_class WHERE id > 100;"

#删除t_class表中原有数据,避免多次插入重复数据
sqoop eval --connect jdbc:mysql://192.168.35.6:3306/lexian --username root --password root  --query "DELETE FROM t_class"

#将HDFS结果导出到mysql的t_class表中
sqoop export --connect jdbc:mysql://192.168.213.1:3306/casedb --username root --password root --table t_class --direct --export-dir /output/t_class --driver com.mysql.jdbc.Driver --input-fields-terminated-by '\t' --lines-terminated-by '\n'
hadoop fs -rmr /output/browseresult
  • 对shell脚本赋予可执行权限
chmod +x sqooptimer.sh

验证shell脚本执行是否正确

  • 在命令行模式下,执行该shell脚本
./sqooptimer.sh

定期执行shell脚本

  • 通过crontab -e 加入以下命令
#每5分钟执行一次命令
*/5 * * * * . /etc/profile; /bin/sh /usr/bigdata/timersh/sqooptimer.sh
  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值