Проблемы с набором искровых данных - PullRequest
0 голосов
/ 18 января 2019

Когда я выполняю функцию в mapPartition набора данных (executeStrategy ()), он возвращает результат, который я мог проверить путем отладки, но когда я использую dataset.show (), он показывает пустую таблицу, и я не знаю, почему это случается

Это для работы по сбору данных в моей школе. Я использую windows 10, scala 2.11.12 и spark-2.2.0, которые работают без проблем.

case class MyState(code: util.ArrayList[Object], evaluation: util.ArrayList[java.lang.Double])

private def executeStrategy(iter: Iterator[Row]): Iterator[(String,MyState)] = {
  val listBest = new util.ArrayList[State]
  Predicate.fuzzyValues = iter.toList

  for (i <- 0 until conf.runNumber) {
    Strategy.executeStrategy(conf.iterByRun, 1, conf.algorithm("algorithm").asInstanceOf[GeneratorType])
    listBest.addAll(Strategy.getStrategy.listBest)
  }

  val result = postMining(listBest)

  result.map(x => (x.getCode.toString, MyState(x.getCode,x.getEvaluation))).iterator
}

def run(sparkSession: SparkSession, n: Int): Unit = {
  import sparkSession.implicits._

  var data0 = conf.dataBase.repartition(n).persist(StorageLevel.MEMORY_AND_DISK_SER)
  var listBest = new util.ArrayList[State]

  implicit def enc1 = Encoders.bean(classOf[(String,MyState)])

  val data1 = data0.mapPartitions(executeStrategy)
  data1.show(3)
}

Я ожидаю, что в наборе данных есть результаты обработки каждого раздела, которые я вижу при отладке, но я получаю пустой набор данных. Я пробовал rdd с той же функцией executeStrategy(), и этот возвращает rdd с результатами. В чем проблема с набором данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...