0

疑似分散クラスターで Hadoop MapReduce ジョブを実行するシェル スクリプトを作成しようとしていますが、先頭に ! が付いていないすべての出力を省略します。出力をawkにパイプしてそのようにフィルタリングしようとしましたが、ほとんどの出力で機能しましたが、JobClientからターミナルへの出力をまだ取得しています。これを防ぐ方法はありますか?

私のコードは現在次のようになっています。

#!/bin/sh

runtimes=$1

for i in {0..$runtimes}
do
  cd ~/Documents/hadoop-1.0.3
  bin/hadoop dfs -rmr /SC_out | awk "{}"
  bin/hadoop jar ../MapReduceTests/SyntaxCounter.jar mrt.SyntaxCounter /WC_in/ /SC_out/ | awk "{}"
  bin/hadoop dfs -cat /SC_out/part* | awk "\$0~/!Map/ {print \$0}"
done

編集:これは、私が抑制しようとしている出力の種類です:

12/08/15 16:45:17 INFO mapred.JobClient: Running job: job_201208151042_0128
12/08/15 16:45:18 INFO mapred.JobClient:  map 0% reduce 0%
12/08/15 16:45:31 INFO mapred.JobClient:  map 100% reduce 0%
12/08/15 16:45:43 INFO mapred.JobClient:  map 100% reduce 100%
4

1 に答える 1

1

この出力は std out ではなく stderr にあるため、次のように修正します。

bin/hadoop jar ../MapReduceTests/SyntaxCounter.jar mrt.SyntaxCounter \
    /WC_in/ /SC_out/  2>/dev/null | awk "{}"

または、より単純に、verbose パラメーターを false に設定してジョブを呼び出します。

job.waitForCompletion(false);
于 2012-08-16T18:44:55.867 に答える