数据框withColumn和null

时间:2018-12-23 05:47:26

标签: apache-spark

我有一个使用DataFrame.withColumn

的简单代码
  test("SparkSQLTest") {
    val spark = SparkSession.builder().master("local").appName("SparkSQLTest").getOrCreate()
    import spark.implicits._
    var df = spark.createDataset(
      Seq(
        ("1", "2"),
        ("3", "4")
      )
    ).toDF("a", "b")
    df = df.withColumn("c", functions.lit(null.asInstanceOf[String]).as[String])
    df.printSchema()
    df.show(truncate = false)
  }

输出模式为:

root
 |-- a: string (nullable = true, metadata = {})
 |-- b: string (nullable = true, metadata = {})
 |-- c: null (nullable = true, metadata = {})

c列的类型为null,我认为它是字符串。如果它为null,则由于不支持null数据类型,因此我无法写入csv。

我会问如何使c的类型正确。

1 个答案:

答案 0 :(得分:2)

我已经尝试过了,并且有效。

df = df.withColumn("c", functions.lit(null.asInstanceOf[String]).cast(StringType))

抱歉,应该强制转换...我已对其进行修改。