从python执行和捕获java执行的输出
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了从python执行和捕获java执行的输出,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1385字,纯文字阅读大概需要2分钟。
内容图文
![从python执行和捕获java执行的输出](/upload/InfoBanner/zyjiaocheng/771/7d573905ef4c4eed8302edca2bc4393f.jpg)
我用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..
这么长的故事简短..我有一个jar程序..当执行吐出一些统计数据..我想从python运行这个java jar …然后捕获这些统计数据…然后在python中修改它们将这些python统计信息显示给用户.
解决方法:
出于多种原因,您希望将shell管道用于此类问题.它使设计视角更加灵活,从python调用进程可能很尴尬,更重要的是管道使python脚本在编程运行时很容易消耗输出.
hadoop jar foo.jar org.foo.bar.MainClass input output 2>&1 | python myscript.py
让myscript.py通过stdin获取输入,并通过print打印正常输出.
请注意,shell命令中的2>& 1将stderr重定向到stdout,因为管道从stdout而不是stderr移动输出.
内容总结
以上是互联网集市为您收集整理的从python执行和捕获java执行的输出全部内容,希望文章能够帮你解决从python执行和捕获java执行的输出所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。