好的,我正在编写一个基于 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/