我使用hadoop api在java中编写了一个程序。因此,该 java 代码的输出是一个 jar .. 说 foo.jar
要在 hadoop 中运行那个 jar,我会
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..执行时会吐出一些统计信息..我想从python运行这个java jar..然后捕获这些统计信息......然后在python中修改它们和向用户显示这些 python 统计信息。