我写了一个小的bash脚本,基本上有2个部分。 第1部分:wget 第2部分:hadoop put
第1部分
wget -r -nH –cut-dirs=1 -R index.html -P /home/snoiniM/data/in/ https://www.someWebSite.com/folder/level2 --user=someUserName --password=P@ssword
下载的文件保存到/ home / snoiniM / data / in /。完成下载文件后,我立刻告诉它加载/ home / snoiniM / data / in / to / place / in / hadoop / downloaded /
hadoop fs -put /home/snoiniM/data/in/ /place/in/hadoop/downloaded/
问题是,脚本执行wget部分,但不执行hadoop put部分。但是,当我注释掉wget行(没有其他更改)时,它会运行hadoop -put部分而不会出错。
为什么两个部分不能一起工作?我似乎无法弄清楚为什么。有谁知道吗?
根据要求,这是我的实际代码。
#! /bin/bash
temp_dir=/tmp/snoiniM
paypal_date=2013-07-01
hdfsdir=/warehouse/hive/f_paypal_agg #target destination
Log INFO "Downloading Paypal Data..."
wget -r -nH -nd -R index.html -A *$paypal_date.zip -P $temp_dir/paypal https://secure.paypaldata.com/gru/ --user=$paypal_user --password=$paypal_passwd
echo "I'll sleep for 2 seconds. Meanwhile, when you see this you know wget is done."
sleep 2
echo "All done. Proceed to hadoop part"
Log INFO "Clearing down any old/duplicate files or data in HDFS..."
for file in /tmp/snoiniM/paypal/*.zip
do
# hadoop fs -rm -f /warehouse/hive/f_paypal_agg/${file##*/}
hadoop fs -rm -f /warehouse/hive/f_paypal_agg/paypal/${file##*/}
done
Log INFO "Loading all trackpal export zip files to HDFS..."
hadoop fs -put $temp_dir/paypal/ $hdfsdir
Log INFO "------------------------------------------------------------"
Log INFO "Paypal exports for $paypal_date loaded to HDFS."
rm -f $temp_dir/paypal/*$paypal_date.zip
Log INFO "Contents in $temp_dir/paypal cleaned and is ready for next run."
快速回顾:程序运行没有错误,但它在wget之后立即停止 - 我没有看到睡眠消息。但是,如果我然后注释掉wget并且第二次运行它,那么它会睡眠部分然后再进入hadoop put。