我需要在bash腳本中運行hadoop命令,該腳本通過亞馬遜S3上的一堆文件夾,然後將這些文件夾名稱寫入一個txt文件,然後執行進一步處理。但問題是當我運行腳本,似乎沒有文件夾名稱被寫入到txt文件。我想知道是否hadoop命令花了很長時間才能運行,而且bash腳本沒有等到它完成並繼續執行進一步的過程,如果是的話,我該如何讓bash等到hadoop命令完成後再執行其他過程?在bash腳本中運行hadoop命令
這裏是我的代碼,我都嘗試方式,既不工作:
1.
listCmd="hadoop fs -ls s3n://$AWS_ACCESS_KEY:[email protected]$S3_BUCKET/*/*/$mydate | grep s3n | awk -F' ' '{print $6}' | cut -f 4- -d/> $FILE_NAME"
echo -e "listing... $listCmd\n"
eval $listCmd
...other process ...
2.
echo -e "list the folders we want to copy into a file"
hadoop fs -ls s3n://$AWS_ACCESS_KEY:[email protected]$S3_BUCKET/*/*/$mydate | grep s3n | awk -F' ' '{print $6}' | cut -f 4- -d/> $FILE_NAME
... other process ....
任何人知道什麼可能是錯了嗎?並且使用eval函數還是隻使用第二種方式直接運行hadoop命令更好?
謝謝。
不 「Hadoop的FS -ls S3N:// $ AWS_ACCESS_KEY:$ AWS_SECRET_KEY @ $ S3_BUCKET/*/*/$指明MyDate」 有任何輸出? – interskh
是的,當直接運行hadoop命令時,運行良好 – user468587