如何分发xgboost模块用于spark?

ele*_*ora 7 machine-learning apache-spark pyspark xgboost

我想在pyspark中使用预训练的xgboost分类器,但是集群上的节点没有安装xgboost模块.我可以挑选我训练过的分类器并广播它但这还不够,因为我仍然需要在每个集群节点上加载模块.

我无法在群集节点上安装它,因为我没有root,也没有共享文件系统.

如何分发xgboost分类器以用于spark?


我有一个鸡蛋用于xgboost.可以像http://apache-spark-user-list.1001560.n3.nabble.com/Loading-Python-libraries-into-Spark-td7059.html/sf/answers/1728069591/工作?

小智 2

Cloudera有一篇非常好的博客文章解释了这个问题。所有的功劳都归他们所有。

但只是简单地回答你的问题 - 不,这是不可能的。任何复杂的第 3 方依赖项都需要安装在集群的每个节点上并正确配置。对于简单的模块/依赖项,人们可能会创建*.egg,*.zip或 文件,并将它们提供给带有中标志的*.py集群。--py-filesspark-submit

然而,xgboost这是一个数字包,它不仅严重依赖于其他Python包,而且还严重依赖于特定的C++库/编译器——这是低级别的。如果您要向集群提供编译后的代码,您可能会遇到因不同硬件架构而产生的错误。再加上集群在硬件方面通常是异构的,这样做将是一件非常糟糕的事情。