当前位置:  开发笔记 > 编程语言 > 正文

Redux:在Hadoop中运行时,如何让Jython在其自己的jar文件中使用存储在Lib中的Python模块?

如何解决《Redux:在Hadoop中运行时,如何让Jython在其自己的jar文件中使用存储在Lib中的Python模块?》经验,为你挑选了0个好方法。

我正在尝试使用Jython来实现Hadoop 1.2.1中的实现.除了陈旧的项目(比如code.google.com/p/happy)之外,我已经看到了很少关于Jython + Hadoop的事情,以及一个过时的实现$HADOOP_HOME/src/examples/python/WordCount.py,所以也许我正在吵着错误的树开始......但是这个似乎合情合理.我也非常了解Hadoop Streaming,我可以在不使用Jython的情况下在Hadoop中使用Python,但这不是我在这里要做的.

基本上,当我使用调用嵌入式/独立Jython的jar文件java -jar /full/path/to/myjythonjar.jar中,/full/path/to/myjythonjar.jar/Lib在我的Python sys.path,但是当我调用使用bin/hadoop jar /full/path/to/myjythonjar.jar input output...jar/Lib是不是在我的道路,并且脚本无法找到Python模块,我引用.

这就是我正在做的......

我正在使用Jython jar的独立版本,并使用该JarRunner界面,大致如此处和其他地方所描述的那样; 基本如下:

 cp jython-standalone-2.7-b1.jar jythonsalib_test.jar  
 jar ufe jythonsalib_test.jar org.python.util.JarRunner __run__.py  

也就是说,拿一个独立jar的副本,添加我的脚本名称__run__.py,然后更改Manifest来执行JarRunner- 非常感谢@Frank Wierzbicki为那个gem.

当我直接跑步时,这一切都很好,例如,

java -jar jythonsalib_test.jar

我的sys.path报告包括'/full/path/to/jar/file/jythonsalib_test.jar/Lib',这正是我所期望的,它是我从中获取Python模块的路径(通过设置sys.path为空列表(失败)和仅通过路径(工作)进行经验测试).

当我在Hadoop中运行这个相同的jar时,例如,as

bin/hadoop jar /full/path/to/jar/file/jythonsalib_test.jar input output

sys.path 只包括

['__classpath__', '__pyclasspath__']

我还使用了Jython独立jar版本2.5.4-rc1(它具有上述相同的行为)和2.5.3(由于无关原因,这对我不起作用).

正如其他SO答案所指出的,我目前使用的解决方法基本上是直接添加我的jar的Lib目录,在Jython脚本里面

import sys
sys.path.append('/full/path/to/jar/file/jythonsalib_test.jar/Lib')

这基本上有效 - 但这应该是一个分布式应用程序!我没有可以用这种方式引用的路径.其他SO文章提出了各种机制,但基本上都添加到库路径(再次,没有链接因为我有<10rep),如上面的Python,Java或Jython安装或Jython"注册表"(startup/rc)文件.当然,我可以使用HDFS或引导机制或其他机制将某些东西分发给计算节点,比如jar或Jython或其他什么,但代码已经在jar中了! 所以我不应该再单独分发它......

总而言之:看起来我需要在一个文件系统上,该文件系统可以直接并单独引用包含Python模块的jar文件.(类似于旧的java -jar jythonjar.jar -jar jythonjar.jar) 我如何说服一个嵌入的,独立的Jython jar总是在Jar文件的Lib子目录中使用Python模块,而不单独指向(可能是相同的)jar文件?

或者:如何添加当前jar文件的相对路径链接...?或者我错过了一些关于Hadoop或Jython或Java或者......或者更为隐蔽和基本的东西?

我有一个载船更多的链接,但SO告诉我,我只能有两个链接,因为我是新来的.我希望有一天能够获得足够的代表才能真正为这个梦幻般的网站做出贡献!:)

无论如何.LTWFTW - 长期观察者,第一次作家 - 非常感谢!

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有