【发布时间】:2013-10-24 00:42:06
【问题描述】:
我使用 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 统计信息。
【问题讨论】:
-
听起来像简单的管道