那些尺寸小于hadoop块大小的文件怎么样:spark +机器学习

时间:2016-06-02 12:51:42

标签: hadoop apache-spark apache-spark-mllib apache-spark-ml

我的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个容器。

问题:

  1. 我可以在这里做些什么来确保我的代码在所有四个节点上运行或使用最大可能内核进行快速计算。
  2. 我可以在分区数据(scala中的DataFrame和Hadoop集群上的csv文件)方面做些什么来提高速度和计算效率
  3. 此致

1 个答案:

答案 0 :(得分:0)

提交作业时,您可以通过参数--num-executors传递所需的执行者数量。您还可以通过--executor-cores--executor-memory指定每个执行程序将使用的核心数和内存量。