2015-06-14 106 views
4

我有一个hadoop集群,我正在使用Numpy,SciPy和Pandas进行数据分析。我希望能够使用'--file'参数将命令作为zip/tar文件提交给我的hadoop作业。这个zip文件应该有一切,我的python程序需要执行,无论我的脚本在集群上执行什么节点,我都不会在运行时遇到ImportError。如何将依赖的python脚本打包到zip/tar?

由于公司政策,在每个节点上安装这些库不是完全可行的,尤其是对于探索性/敏捷开发。虽然我已经安装了pip和virtualenv来创建沙箱。

我已经看过zipimportpython packaging但这些都不符合我的需求/我在使用这些工具时遇到困难。

有没有人有这样做的运气?我似乎无法在网上找到任何成功案例。

谢谢!

+0

不确定这些特定的依赖关系,但pex在创建一个文件方面效果很好:https://pex.readthedocs.org/en/latest/ –

回答

0

我已经通过创建需要安装Python库和Spark从脚本的Docker镜像解决了Apache Spark和Python上下文中的类似问题。图像被分发给其他机器,当容器启动时它会自动加入到集群,我们只有一台这样的图像/主机。

我们不断变化的python项目与作业一起以zip文件的形式提交,并在那里透明地导入工作。幸运的是,我们很少需要重新创建这些从属映像,并且我们不会运行具有冲突要求的作业。

我不知道你的情况如何适用,特别是因为(在我的理解)一些python库必须编译。

+0

如果你看到“Spark slave script”,我会非常感兴趣可以自由分享。 – Stuart

+0

该脚本引用了类似https://github.com/nikonyrh/docker-scripts/blob/master/startSparkSlave.sh的文件,该文件是“码头运行”命令的包装。最重要的是它设置SPARK_PUBLIC_DNS并使用“--net主机”,如http://stackoverflow.com/a/32737662/3731823中所述 – NikoNyrh

相关问题