Почему в Apache Spark SQL столбцы заменяются на обнуляемые?

Почемуnullable = true используется после выполнения некоторых функций, даже если вDataFrame.

val myDf = Seq((2,"A"),(2,"B"),(1,"C"))
         .toDF("foo","bar")
         .withColumn("foo", 'foo.cast("Int"))

myDf.withColumn("foo_2", when($"foo" === 2 , 1).otherwise(0)).select("foo", "foo_2").show

когдаdf.printSchema называется сейчасnullable будетfalse для обоих столбцов.

val foo: (Int => String) = (t: Int) => {
    fooMap.get(t) match {
      case Some(tt) => tt
      case None => "notFound"
    }
  }

val fooMap = Map(
    1 -> "small",
    2 -> "big"
 )
val fooUDF = udf(foo)

myDf
    .withColumn("foo", fooUDF(col("foo")))
    .withColumn("foo_2", when($"foo" === 2 , 1).otherwise(0)).select("foo", "foo_2")
    .select("foo", "foo_2")
    .printSchema

Однако сейчасnullable являетсяtrue по крайней мере для одного столбца, который былfalse до. Как это можно объяснить?

Ответы на вопрос(2)

Ваш ответ на вопрос