您好我想在DataFrame的每一行中使用现有列添加新列,我在Spark Scala中尝试这样... df是包含可变列数的数据帧,只能在运行时决定。
// Added new column "docid"
val df_new = appContext.sparkSession.sqlContext.createDataFrame(df.rdd, df.schema.add("docid", DataTypes.StringType))
df_new.map(x => {
import appContext.sparkSession.implicits._
val allVals = (0 to x.size).map(x.get(_)).toSeq
val values = allVals ++ allVals.mkString("_")
Row.fromSeq(values)
})
但这就是错误就是日食本身
请帮忙。
答案 0 :(得分:1)
concat_ws
可以提供帮助。
此代码添加了docid
字段
df = df.withColumn("docid", concat_ws("_", df.columns.map(df.col(_)):_*))
假设df
的所有列都是字符串。
答案 1 :(得分:0)
使用UDF和withColumn Api
可以更好地完成