scala - 如何在 Scala 中避免/修复错误“java.io.Serializable”
问题描述
您通常如何修复下面的“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()
^
解决方案
您必须确保模式匹配块
match {
case true => allKeys(afd)
case false => "no"
}
返回一致的类型。现在一个分支返回Dataset[Row]
另一个分支String
,所以最接近的常见类型是Serializable
. 最简单的解决方法是使用您选择的架构返回一个空DataFrame
no
,而不是.
match {
case true => allKeys(afd)
case _ => spark.emptyDataFrame
}
推荐阅读
- python - 值错误:nlp.add_pipe(LanguageDetector(), name='language_detector', last=True)
- swift - 如何干净地拆分和重组 Swift Publisher 值?(使用 OpenCombine)
- go - 1.16 中的 go 模块更改后构建不起作用
- python-3.x - 如何使用 tkinter 在 python 中创建窗口构造函数
- c++ - 使用带有 ASCII 26 字符的 istringstream
- nginx - 在 kubernetes nginx 入口控制器中传递请求标头和请求正文
- html - 通过数据属性传递时无法访问 [object Object]
- wordpress - 警告: call_user_func_array() 期望参数 1 是一个有效的回调
- button - 如何刷新散景中的图形?
- javascript - Laravel Echo 没有在实时聊天中监听事件