Apache spark 如何在Spark中设置StructType structField的默认值?

Apache spark 如何在Spark中设置StructType structField的默认值?,apache-spark,spark-dataframe,Apache Spark,Spark Dataframe,我是这样定义我的领域的 val os = structField(self.os, StructType( StructField("family", StringType, true) :: StructField("major", StringType, true) :: StructField("minor", StringType, true) :: StructField("patch", StringType, true)

我是这样定义我的领域的

val os = structField(self.os, StructType(
      StructField("family", StringType, true) ::
        StructField("major", StringType, true) ::
        StructField("minor", StringType, true) ::
        StructField("patch", StringType, true) ::
        StructField("patch_minor", StringType, true) :: Nil
    ))
java.lang.ClassCastException: java.lang.String cannot be cast to com.mongodb.DBObject
但我的数据有点不一致。 有些数据有“os”字段,有些没有,有些是空字符串

如果字段为空或未将所有子字段设置为空,则如何设置该字段的默认值。 我使用when-it-null将其设置为null值,但我想将其设置为
{family:null,major:null,minor:null,patch:null,patch\u minor:null}

when(imRDD("os").isNull, null).as("os"),
它抛出这样的错误

val os = structField(self.os, StructType(
      StructField("family", StringType, true) ::
        StructField("major", StringType, true) ::
        StructField("minor", StringType, true) ::
        StructField("patch", StringType, true) ::
        StructField("patch_minor", StringType, true) :: Nil
    ))
java.lang.ClassCastException: java.lang.String cannot be cast to com.mongodb.DBObject

你能提供一个可复制的例子吗?看来问题出在别的地方了。com.mongodb.DBObject在这里做什么?好的。我也使用spark mongo lib。请稍等。