【问题标题】:How do I avoid/fix error "java.io.Serializable" in Scala如何在 Scala 中避免/修复错误“java.io.Serializable”
【发布时间】:2019-08-15 04:19:22
【问题描述】:

您通常如何修复下面的“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()
         ^

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    你必须确保模式匹配块

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

    返回一致的类型。现在一个分支返回Dataset[Row] 和另一个String,所以最接近的常见类型是Serializable。最简单的解决方法是使用您选择的架构返回 empty DataFrame,而不是 no

    match {
      case true => allKeys(afd) 
      case _ => spark.emptyDataFrame
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-18
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 2017-10-17
      • 1970-01-01
      • 2017-08-30
      相关资源
      最近更新 更多