Amazon S3 の一連のフォルダーを通過する bash スクリプトで hadoop コマンドを実行し、それらのフォルダー名を txt ファイルに書き込み、さらに処理を行う必要があります。しかし問題は、スクリプトを実行したときに、フォルダー名がtxtファイルに書き込まれなかったようです。Hadoop コマンドの実行に時間がかかりすぎて、bash スクリプトが終了するまで待機せず、次のプロセスに進むのではないかと考えています。
これが私のコードです。両方の方法を試しましたが、どちらも機能しません:
1.
listCmd="hadoop fs -ls s3n://$AWS_ACCESS_KEY:$AWS_SECRET_KEY@$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:$AWS_SECRET_KEY@$S3_BUCKET/*/*/$mydate | grep s3n | awk -F' ' '{print $6}' | cut -f 4- -d / > $FILE_NAME
... other process ....
誰が何が間違っているのか知っていますか?そして、eval関数を使用する方が良いですか、それとも2番目の方法を使用してhadoopコマンドを直接実行する方が良いですか
ありがとう。