- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 Jython 在 Hadoop 1.2.1 中实现。除了过时的项目(如 code.google.com/p/happy)和 $HADOOP_HOME/src/examples/python/WordCount.py
中的过时实现之外,我很少看到关于 Jython+Hadoop 的信息,所以也许我一开始就找错了树……但这似乎是合理且可能的。我也非常了解 Hadoop Streaming,通过它我可以在 Hadoop 中使用 Python 而无需使用 Jython,但这不是我在这里想要做的。
基本上,当我使用 java -jar/full/path/to/myjythonjar.jar
调用嵌入式/独立 Jython jar 文件时,/full/path/to/myjythonjar. jar/Lib
在我的 Python sys.path
中,但是当我使用 bin/hadoop jar/full/path/to/myjythonjar.jar 输入输出
调用时...jar/Lib
不在我的路径中,脚本找不到我正在引用的 Python 模块。
这是我正在做的...
我正在使用 Jython jar 的独立版本,并使用 JarRunner
接口(interface),大致如描述的那样 on SO here和其他地方;基本如下:
cp jython-standalone-2.7-b1.jar jythonsalib_test.jar
jar ufe jythonsalib_test.jar org.python.util.JarRunner __run__.py
也就是说,获取独立 jar 的副本,添加名为 __run__.py
的我的脚本,并更改 list 以执行 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 时,例如
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 答案所指出的,我目前使用的解决方法基本上是直接在 Jython 脚本中添加我的 jar 的 Lib 目录,如
import sys
sys.path.append('/full/path/to/jar/file/jythonsalib_test.jar/Lib')
这基本上是有效的——但这是一个分布式应用程序!没有我可以以这种方式引用的路径。其他 SO 文章提出了各种机制,但基本上都是通过上面的 Python、Java 或 Jython 安装或 Jython“注册表”(启动/rc)文件添加到库路径(同样,没有链接,因为我有 <10rep)。当然,我可以使用 HDFS 或引导机制或其他机制将某些东西分发到计算节点,例如 jar 或 Jython 或其他任何东西,但是代码已经在 jar 中了!所以我不需要再次分发它,单独...
因此,总而言之:看起来我需要在一个可以直接单独引用包含 Python 模块的 jar 文件的文件系统上。 (类似于旧的 java -jar jythonjar.jar -jar jythonjar.jar
)我如何说服嵌入式独立 Jython jar 始终使用位于Jar 文件,而不单独指向(可能相同的)jar 文件?
或者:如何添加到当前 jar 文件的相对路径链接...?或者我错过了一些关于 Hadoop 或 Jython 或 Java 或...的更隐蔽和基本的东西?
我有很多链接,但 SO 告诉我我只能有 两个 链接,因为我是新来的。我希望有一天能获得足够的代表能够真正为这个奇妙的网站做出贡献! :)
无论如何。 LTWFTW -- 长期观察者,第一次写作 -- 非常感谢!
最佳答案
我想知道用 OneJar 打包您的应用程序是否会有所改善。请尝试并报告。我只是在黑暗中拍摄。
关于java - 终极版 : How do I get Jython to use Python modules stored in Lib within its own jar file when running in Hadoop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23279091/
我一直在尝试将 Redux 集成到项目中。 我按照使用示例进行操作,但收到错误store.getState is not a function。 所以我知道其他人也问过类似的问题,但情况略有不同。 R
我正在尝试将我的第一个应用程序上传到 App Store。我已完成 iTunes Connect 所需的所有步骤,我的应用程序状态为“等待上传”。 我相信下一步是使用 Application Load
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
App Store 有所谓的“服务器到服务器”通知。也就是说,当您购买应用内功能时,Apple 服务器会向您服务器的回调方法(发送收据数据)发出 HTTPS 请求。 问题是 - 收据数据中似乎没有用户
我已经将我的第一个应用程序上载到App Store,但是我没有放置我的App需要位置服务和wifi的UIRequiredDeviceCapabilities。结果:该应用程序没有像应做的那样开始寻找坐
由于iOS 8将于本月发布,并且我的应用仅支持32位(因为第3个库仅兼容32位),因此我不确定如果我将新版本的应用提交给我,则该应用的新版本是否会被拒绝App Store将于下个月发布,因为它不支持6
我有一个让我有些困惑的问题。 为了将我的应用提交到App Store,我必须输入Bundle ID后缀。如您所知,Bundle ID会获得Bundle ID后缀的确切名称(您在Bundle ID后缀上
如问题所述,我想知道更新后的应用程序一旦获得批准,是否会自动发布到应用程序商店中? 我的更新已完成并且已经过测试,由于需要几天的时间才能批准,因此我希望现在将其提交批准。同时,我需要在服务器上更改一些
获取应用程序提交到 Apple App Store 的屏幕截图的最简单方法是什么,需要包含的各种尺寸是多少? 另外,是否允许状态栏?我相信我听说它不是,但是包括 Facebook 和 Quora 在内
我在 iTunes 商店中有一个应用程序,其分发证书(在 key 链访问中)将于明天到期。它是一年前生成的,尽管我最近更新了我的 iPhone 开发者计划,但我还没有更新任何证书或签名。 当我将测试设
我的商店包含以下 reducer : export const centralStampState = { layoutState : layoutReducer, //this one is n
我即将将我的应用程序提交到 Apple App Store,并且我了解到 Apple 需要两周时间才能对其进行审核,然后才能上线。但是,在 iTunes Connect 的定价部分,它询问我什么时候发
如果我的应用程序正在接受审核或已获得批准(因此处于 Ready For Sale 状态或同等状态),我可以编辑哪些应用程序信息而无需提交应用程序的新版本? 最佳答案 据此Apple Documenta
我已经在Opera管理控制台上进行了全面检查,看不到他们在哪里提到付款方式。他们说明何时制作,但没有说明。即Paypal,Cheque等。 有人知道他们如何付款吗? 最佳答案 当金额达到200美元时,
我上传了我的二进制文件并创建了屏幕截图。我做的所有屏幕截图都是 640x960,我将它们上传为 PNG。这背后的想法是,我应该以尽可能最好的质量把它交给他们,这样当他们将它们重新压缩成 320x480
我从Microsoft下载了Windows 8 app samples,并下载了这些示例之一加速度传感器示例 我不知道如何测试它以计划使用此功能的软件? 我没有水面设备,想知道只有一种方法可以做到吗?
我正在为TestFlight上传第二个应用程序。第一次进展顺利,但这次却被拒绝了。 We have started the review of your beta app, but we are no
不确定这是正确的论坛,如果不是,我提前道歉。 某处是否有 App Store 新版本的提要?还是带有类别和发布日期的应用提要/列表? 此列表已从 App Store 中消失,我想看看是否可以制作一个应
我有一个 JSON 存储,定义如下 var subAccountStore = new Ext.data.JsonStore({ autoLoad: true, proxy: { ty
我有一个提交到应用商店的应用被拒绝,原因是: 2.30 不符合 Mac OS X 文件系统文档的应用将被拒绝 他们声称我的应用正在修改不受支持的 ~/Library/Preferences/com.a
我是一名优秀的程序员,十分优秀!