我有一个Java应用程序,它在一个包含200K样本的训练集上训练一个MLlib随机森林(org.apache.spark.mllib.tree.RandomForest)。我注意到在训练过程中只使用了一个CPU核心。鉴于随机森林是N个决策树的集合,人们可能会认为这些树可以并行训练,从而利用所有可用的核心。是否有配置选项或API调用或其他任何东西可以启用决策树的并行训练?
发布于 2017-01-25 21:28:45
我找到了答案。问题出在我如何使用SparkConf.setMaster(“本地”)设置Spark配置。我将其更改为SparkConf.setMaster("local16")以使用16个线程,按照javadoc:
http://spark.apache.org/docs/latest/api/java/org/apache/spark/SparkConf.html#setMaster(java.lang.String)
现在我训练我们跑得更快了,弗吉尼亚州的亚马逊数据中心稍微热了一点:)
这是RTFM的一个典型案例,但在我看来,使用setMaster()似乎有点老生常谈。更好的设计是添加一个单独的方法来设置要使用的本地线程/核心的数量。
https://stackoverflow.com/questions/40440096
复制相似问题