У меня есть исполнение Spark-ML с деревом решений и перекрестной проверкой внутри.
По неизвестной причине происходит сбой этой трассировки стека во время перекрестной проверки:
org.apache.spark.util.ThreadUtils $ .awaitResult (ThreadUtils.scala: 205)
org.apache.spark.ml.tuning.CrossValidator $$ anonfun $ 4 $$ anonfun $ 6.apply (CrossValidator.scala: 164)
org.apache.spark.ml.tuning.CrossValidator $$ anonfun $ 4 $$ anonfun $ 6.apply (CrossValidator.scala: 164)
scala.collection.TraversableLike $$ anonfun $ Карта $ 1.Apply (TraversableLike.scala: 234)
scala.collection.TraversableLike $$ anonfun $ Карта $ 1.Apply (TraversableLike.scala: 234)
scala.collection.IndexedSeqOptimized $ class.foreach (IndexedSeqOptimized.scala: 33)
scala.collection.mutable.ArrayOps $ ofRef.foreach (ArrayOps.scala: 186)
scala.collection.TraversableLike $ class.map (TraversableLike.scala: 234)
scala.collection.mutable.ArrayOps $ ofRef.map (ArrayOps.scala: 186)
org.apache.spark.ml.tuning.CrossValidator $$ anonfun $ 4.Apply (CrossValidator.scala: 164)
org.apache.spark.ml.tuning.CrossValidator $$ anonfun $ 4.Apply (CrossValidator.scala: 144)
scala.collection.TraversableLike $$ anonfun $ Карта $ 1.Apply (TraversableLike.scala: 234)
scala.collection.TraversableLike $$ anonfun $ Карта $ 1.Apply (TraversableLike.scala: 234)
scala.collection.IndexedSeqOptimized $ class.foreach (IndexedSeqOptimized.scala: 33)
scala.collection.mutable.ArrayOps $ ofRef.foreach (ArrayOps.scala: 186)
scala.collection.TraversableLike $ class.map (TraversableLike.scala: 234)
scala.collection.mutable.ArrayOps $ ofRef.map (ArrayOps.scala: 186)
org.apache.spark.ml.tuning.CrossValidator.fit (CrossValidator.scala: 144)
decisionTree.DecisionTreeDisplay.process (DecisionTreeDisplay.scala: 151)
Далее следуют некоторые следы стека потоков:
2019-01-23 16:26:21 ОШИБКА TaskSchedulerImpl: 91 - Исключение в
statusUpdate java.util.concurrent.RejectedExecutionException: Задача
org.apache.spark.scheduler.TaskResultGetter$$anon$3@764726a7 отклонено
от java.util.concurrent.ThreadPoolExecutor@783b07b9 [Завершение работы,
размер пула = 2, активных потоков = 2, задач в очереди = 0, выполненных задач =
4914] в
java.util.concurrent.ThreadPoolExecutor $ AbortPolicy.rejectedExecution (ThreadPoolExecutor.java:2063)
в
java.util.concurrent.ThreadPoolExecutor.reject (ThreadPoolExecutor.java:830)
в
java.util.concurrent.ThreadPoolExecutor.execute (ThreadPoolExecutor.java:1379)
в
org.apache.spark.scheduler.TaskResultGetter.enqueueSuccessfulTask (TaskResultGetter.scala: 61)
в
org.apache.spark.scheduler.TaskSchedulerImpl.liftedTree2 $ 1 (TaskSchedulerImpl.scala: 413)
в
org.apache.spark.scheduler.TaskSchedulerImpl.statusUpdate (TaskSchedulerImpl.scala: 394)
в
org.apache.spark.scheduler.local.LocalEndpoint $$ anonfun $ получить $ 1.applyOrElse (LocalSchedulerBackend.scala: 67)
в
org.apache.spark.rpc.netty.Inbox $$ anonfun $ процесса $ 1.Apply $ мкВ $ зр (Inbox.scala: 117)
в org.apache.spark.rpc.netty.Inbox.safelyCall (Inbox.scala: 205) в
org.apache.spark.rpc.netty.Inbox.process (Inbox.scala: 101) в
org.apache.spark.rpc.netty.Dispatcher $ MessageLoop.run (Dispatcher.scala: 221)
в
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149)
в
java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:624)
at java.lang.Thread.run (Thread.java:748)
Мой код перекрестной проверки:
// define Cross-Validation
val cv = new CrossValidator()
.setEstimator(pipeline)
.setEvaluator(evaluator)
.setEstimatorParamMaps(paramGrid)
.setNumFolds(3)
.setSeed(seed)
.setCollectSubModels(true) // requires version of spark >= 2.3.0
.setParallelism(8) // requires version of spark >= 2.3.0
val cvModel = cv.fit(trainInfile) //Fail here
В библиотеке ML, похоже, сбой в строке:
val foldMetrics = foldMetricFutures.map(ThreadUtils.awaitResult(_, Duration.Inf))
Есть идеи?