Я не уверен, как ведет себя фрейм данных, но в простом Scala прямое использование метода head является потенциальной проблемой, например, когда результирующий список пуст, возникает исключение, подобное тому, которое вы опубликовали.Я бы предложил перейти на headOption, а затем работать над монадой Option.Надеюсь, это поможет.Приветствия
РЕДАКТИРОВАТЬ: Поскольку DataFrame (DataSet [T]) не имеет элегантного способа обработки операции, аналогичной headOption, я предлагаю следующее решение:
implicit class DataSetOps(myDataSet: Dataset[T]) {
def headOption: Option[T] = {
myDataSet.count match {
case size if size > 0 => Option(myDataSet.first)
case _ => None
}
}
}
Затем вы можете сделать что-токак
val myFirstElementAsOpt: Option[T] = myDataSet.headOption