我编写了一个小bash脚本,基本上有两个部分。第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之后就停止了——我看不到sleep消息。然而,如果我随后注解掉wget并第二次运行它,它将执行睡眠部分,然后转到hadoop put。
暂无答案!
目前还没有任何答案,快来回答吧!