java - Hadoop 中的 Python 导入

标签 java python hadoop import

好的,我正在编写一个基于 java 的 Hadoop MR 任务。任务的一部分是调用外部 python 脚本作为新进程,将信息传递给它并读回结果。在不使用 hadoop 时,我已经做过几次没有问题。

当它不导入任何内容或仅在节点的 python 安装上的内容时,我还可以将单个 python 脚本称为 hadoop 中的新进程。

当前的 python 脚本调用另一个脚本的导入,该脚本通常只是位于同一目录中,并且在不在 hadoop 上运行时可以正常工作。

在 hadoop 中,我已将两个文件都添加到分布式缓存中,所以我不明白为什么脚本无法导入另一个文件。

最佳答案

好的,这个是我自己想出来的。

python 进程遇到的问题是 HDFS 使用符号链接(symbolic link)。另一方面,Python 不接受符号链接(symbolic link)作为有效文件,因此如果在同一目录中,则不会从它们导入。

您可以将目录添加到缓存中,而不是将每个文件添加到分布式缓存中,然后对目录的任何调用都是通过符号链接(symbolic link)进行的,但对文件的调用则在实际目录中,从而允许 python 进程导入库

关于java - Hadoop 中的 Python 导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29660487/

相关文章:

hadoop - SequenceFile 作为带有自定义类的文本 CLI

javascript - jQuery getJSON 方法无响应

Python:Tornado 和持久数据库连接

python - 为什么特定导入会看到其他导入? Python 2.6

python - 当所有值都等于多个标准时,删除 Pandas 中的观察结果

hadoop - 将 Hadoop 配置为多节点集群

Hadoop - 流式传输时映射功能键

java - Jackson 模板属性替换

除非我打印 Something Inside,否则 Java Thread 不会停止 While Loop

java - 谷歌应用管理 API : need to specify account user for service account?