spark withcolumn 从现有列创建列重复值
Posted
技术标签:
【中文标题】spark withcolumn 从现有列创建列重复值【英文标题】:spark withcolumn create a column duplicating values from existining column 【发布时间】:2018-02-24 03:11:39 【问题描述】:我无法解决这个问题。这是问题陈述 假设我有一个数据框,我想为 b 列值为 foo 的列 c 选择值并创建一个新列 D 并为所有行重复值“3”
+---+----+---+
| A| B| C|
+---+----+---+
| 4|blah| 2|
| 2| | 3|
| 56| foo| 3|
|100|null| 5|
+---+----+---+
want it to become:
+---+----+---+-----+
| A| B| C| D |
+---+----+---+-----+
| 4|blah| 2| 3 |
| 2| | 3| 3 |
| 56| foo| 3| 3 |
|100|null| 5| 3 |
+---+----+---+-----+
【问题讨论】:
【参考方案1】:您必须在B
列中提取C
列的值,即3
和foo
import org.apache.spark.sql.functions._
val value = df.filter(col("B") === "foo").select("C").first()(0)
然后使用 withColumn
使用该值创建一个新列 D
使用 lit
函数
df.withColumn("D", lit(value)).show(false)
你应该得到你想要的输出。
【讨论】:
以上是关于spark withcolumn 从现有列创建列重复值的主要内容,如果未能解决你的问题,请参考以下文章
如何通过对现有列执行一些转换来使用 withcolumn 添加列?
“withColumn”的 Spark Date 列初始值设定项?
在 Spark Scala 中使用“withColumn”函数的替代方法
从数据集中的现有列创建新列 - Apache Spark Java