[英]Adding new column using existing one using Spark Scala
嗨,我想使用 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)
})
但这给出的错误是日食本身
请帮忙。
函数对象中的concat_ws
可以提供帮助。
此代码添加了docid
字段
df = df.withColumn("docid", concat_ws("_", df.columns.map(df.col(_)):_*))
假设df
所有列都是字符串。
通过使用UDF和withColumn Api,可以以更好的方式完成此操作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.