今天做了一个简单的需求,梳理一下

总体的思路是:从11.203上把一张hive表down 到本地,然后scp到8.203 再scp到 16.205,在16.205上传到hive中,

这是两个不同集群间的数据传输。

我中间用的expect + scp  + hive脚本

首先利用hive的命令把对应的表down到本地

insert overwrite local directory '/tmp/yhl/${tablename}' select * from ${tablename} 

然后就利用一个expect  scp 到8.203

再就是用expect ssh到8.203,再执行8.203上的一个expect scp文件,把8.203的文件scp到16.205上

再就是expect ssh到 8.203 ,再执行8.203上的expect  ssh文件,执行16.205上的hive脚本,把16.205上的数据up到hive集群中

其中11.203上的程序如下:


8.203 上的程序如下:


16.205上有up到hive的脚本文件  insert.hql  ,执行命令如下:

hive -hiveconf tablename=${tablename} -f /app/jzyx/yhl/insert.hql

内容如下:


总结:有个问题 当通过expect来执行hive脚本时,当hive还没有开始启动或正在启动的时候,expect就给断掉了。这就涉及一个超时的问题,hive是个较长时间运行的程序,expect 一般都只设为5秒或10秒的超时,远远不够一个hive执行完的时间,所以,如果涉及较长时间的脚本的话,expect 的超时要适当的长些 格式为 set  timeout  30

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值