Hadoop APIを使用してJavaでプログラムを作成しました。したがって、その Java コードの出力は jar です。たとえば、foo.jar とします。
その jar ファイルを Hadoop で実行するには、次のようにします。
hadoop jar foo.jar org.foo.bar.MainClass input output
これにより、長い Hadoop タスク (数分など) が開始されます。
ジョブが実行されている間.. Hadoop は進行状況を教えてくれます..
Map 0%, Reduce 0%
Map 20%, Reduce 0%
....
など..ジョブが終了した後、hadoop は大量の統計情報 (入力サイズ、分割、レコードなど) を吐き出します..これはすべてコマンド ラインから実行されます..
今、私がやろうとしているのは.. Pythonからこのプログラムを呼び出すことです(単純なシステム実行を使用して..)
しかし、私が欲しいのは..このpythonコードを実行すると..これらの統計の一部も表示したい..しかし、すべてではない..
だから、私が探しているのは、そのjar実行によって表示されているこれらの統計をキャプチャし、Python内で処理し、その処理された統計を表示する方法です..
たとえば..デフォルトでは、hadoop が表示します..
Map 0%, Reduce 0%
Map 20%, Reduce 0%
...
等々..
そして多分私が持っているのは...
def progress_function(map,reduce):
return sum([map,reduce])/2.0
そして、コマンドプロンプトに表示しています..
progress so far:0
progress so far:10
and so on..
簡単に言えば..私はJavaプログラムのjarを持っています..実行するといくつかの統計が吐き出されます..このJava jarをPythonから実行したい..そしてこれらの統計をキャプチャします...そしてPython内でそれらを変更し、これらの python 統計をユーザーに表示します。