我的hadoop块大小,如果128 MB,我的文件是30 MB。 而我的运行spark的集群是一个4节点集群,总共有64个核心。
现在我的任务是运行随机森林或梯度增强算法,使用参数网格和3倍交叉验证。
代码的几行:
import org.apache.spark.ml.tuning.{ParamGridBuilder, TrainValidationSplit, CrossValidator}
import org.apache.spark.ml.regression.GBTRegressor
val gbt_model = new GBTRegressor().setLabelCol(target_col_name).setFeaturesCol("features").setMaxIter(2).setMaxDepth(2).setMaxBins(1700)
var stages: Array[org.apache.spark.ml.PipelineStage] = index_transformers :+ assembler :+ gbt_model
val paramGrid = new ParamGridBuilder().addGrid(gbt_model.maxIter, Array(100, 200)).addGrid(gbt_model.maxDepth, Array(2, 5, 10)).build()
val cv = new CrossValidator().setEstimator(pipeline).setEvaluator(new RegressionEvaluator).setEstimatorParamMaps(paramGrid).setNumFolds(5)
val cvModel = cv.fit(df_train)
我的档案有
输入: 10个离散/字符串/字符要素+ 2整数要素
输出:整数响应/输出变量
这需要4个多小时才能在我的群集上运行。我观察到的是我的代码仅在1个节点上运行,只有3个容器。
问题:
此致
答案 0 :(得分:0)
提交作业时,您可以通过参数--num-executors
传递所需的执行者数量。您还可以通过--executor-cores
和--executor-memory
指定每个执行程序将使用的核心数和内存量。