Я пытаюсь запустить простой конвейер в Spark, однако при использовании CrossValidator () выдается ошибка awaitResult. Этого не происходит с TrainValidationSplit ().
Я пытался разместить CrossValidator () внутри и снаружи конвейера, оба возвращают одну и ту же ошибку.
\\ Pipeline components
val discretizer = new QuantileDiscretizer()
.setNumBuckets(7)
.setInputCol("rmse")
.setOutputCol("actual_error_bucket")
val assmbleFeatures: VectorAssembler = new VectorAssembler()
.setInputCols(featureColumns)
.setOutputCol("features")
val randomForest = new RandomForestClassifier()
.setLabelCol("actual_error_bucket")
.setFeaturesCol("features")
.setImpurity("entropy")
.setSubsamplingRate(0.8)
// Pipeline
val pipeline = new Pipeline()
.setStages(Array(discretizer, assmbleFeatures, randomForest))
val paramGrid = new ParamGridBuilder()
.addGrid(randomForest.maxDepth, (10 to 20 by 10).toArray)
.addGrid(randomForest.numTrees, (100 to 130 by 10).toArray)
.addGrid(randomForest.maxBins, (12 to 22 by 10).toArray)
.build()
// throws error
val crossValidator = new CrossValidator()
.setEstimator(pipeline)
.setEstimatorParamMaps(paramGrid)
.setEvaluator(new MulticlassClassificationEvaluator)
.setNumFolds(2)
val Array(training, test) = df.randomSplit(Array(0.75, 0.25), seed = 12345)
val pipeLineModel = tvs.fit(training)
Я ожидал, что обученная модель будет такой же, как и при работе вне конвейера.