当前位置: 首页 > 知识库问答 >
问题:

如何使用Scala在DataFrame中添加新的可空字符串列

通安宁
2023-03-14

可能至少有10个问题与此非常相似,但我仍然没有找到明确的答案。

如何使用scala将可空字符串列添加到数据帧?我可以添加一个具有空值的列,但数据类型显示为空

val testDF = myDF.withColumn("newcolumn", when(col("UID") =!= "not", null).otherwise(null))

然而,该模式显示

root
 |-- UID: string (nullable = true)
 |-- IsPartnerInd: string (nullable = true)
 |-- newcolumn: null (nullable = true)

我希望新列是string |-new column:string(nullable = true)

请不要将其标记为重复,除非它实际上是同一个问题并且在scala中。

共有2个答案

金子平
2023-03-14

为什么需要一个始终为空的列?有几种方法,我更喜欢使用typedLit的解决方案

myDF.withColumn("newcolumn", typedLit[String](null))

或对于较旧的Spark版本:

myDF.withColumn("newcolumn",lit(null).cast(StringType))
昌乐生
2023-03-14

只需将null文本显式转换为< code>StringType。

scala> val testDF = myDF.withColumn("newcolumn", when(col("UID") =!= "not", lit(null).cast(StringType)).otherwise(lit(null).cast(StringType)))

scala> testDF.printSchema

root
 |-- UID: string (nullable = true)
 |-- newcolumn: string (nullable = true)
 类似资料: