Как мне избежать / исправить ошибку "java.io.Serializable" в Scala - PullRequest
0 голосов
/ 25 марта 2019

Как вы обычно исправляете ошибку "java.io.Serializable" ниже?

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

def allKeys(sampledf: DataFrame): DataFrame = {......}

val afd12= afd.schema.fieldNames.contains("ID") && afd.schema.fieldNames.contains("CONNECTIDS") match {
   case true => allKeys(afd) 
   case false => "no"
}

afd12.printSchema()

Это ошибка, которую я получаю:

afd: java.io.Serializable = [ID: string, ADDITIONALINFO: string ... 87 more fields]
<console>:95: error: value printSchema is not a member of java.io.Serializable
   afd12.printSchema()
         ^

1 Ответ

2 голосов
/ 25 марта 2019

Необходимо убедиться, что блок сопоставления с образцом

 match {
   case true => allKeys(afd) 
   case false => "no"
}

возвращает согласованные типы.Прямо сейчас одна ветвь возвращает Dataset[Row], а другая String, поэтому ближайший общий тип - Serializable.Самое простое решение - вернуть пустой DataFrame со схемой по вашему выбору вместо no.

match {
  case true => allKeys(afd) 
  case _ => spark.emptyDataFrame
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...