从MS SQL数据库导入数据时,可能存在空值 . 在Spark中,DataFrames能够处理空值 . 但是当我尝试将DataFrame转换为强类型数据集时,我收到编码器错误 .
这是一个简单的例子:
case class optionTest(var a: Option[Int], var b: Option[Int])
object testObject {
def main(args: Array[String]): Unit = {
import spark.implicits._
val df = spark.sparkContext.parallelize(Seq(input)).toDF()
val df2 = Seq((1, 3), (3, Option(null)))
.toDF("a", "b")
.as[optionTest]
df2.show()
}
}
以下是此案例的错误:
No Encoder found for Any
- field (class: "java.lang.Object", name: "_2")
- root class: "scala.Tuple2"
java.lang.UnsupportedOperationException: No Encoder found for Any
- field (class: "java.lang.Object", name: "_2")
- root class: "scala.Tuple2"
从DataFrame创建数据集时,建议的处理可为空值的方法是什么?