我正在尝试创建一个空的数据框并追加新列。我试图通过两个选择来做到这一点。选项A在工作,但选项B在行。请帮忙!
选项A:
`
var initialDF1 = Seq(("test")).toDF("M")
initialDF1 = initialDF1.withColumn(("P"), lit(s"P"))
initialDF1.show
+----+---+
| M| P|
+----+---+
|test| P|
+----+---+
`
选项B :(不起作用)
`
import org.apache.spark.sql.types.{StructType, StructField, StringType}
import org.apache.spark.sql.Row
val schema = StructType(List(StructField("N", StringType, true)))
var initialDF = spark.createDataFrame(sc.emptyRDD[Row], schema)
initialDF = initialDF.withColumn(("P"), lit(s"P"))
initialDF.show
+---+---+
| N| P|
+---+---+
+---+---+
`
答案 0 :(得分:3)
它按照预期的方式工作,withColumn命令仅影响架构,并且它允许为现有记录设置值(lit或其他计算),但仅适用于现有行。在第二种情况下,您创建了一个空的数据框。 withColum对此进行迭代,并向任何现有行添加“ P”(无)。