Spark:有条件地将 col1 值替换为 col2 [重复]
Posted
技术标签:
【中文标题】Spark:有条件地将 col1 值替换为 col2 [重复]【英文标题】:Spark: Conditionally replace col1 value with col2 [duplicate] 【发布时间】:2018-10-31 02:16:23 【问题描述】:我有一个已加入旧数据和更新数据的数据框:
我想折叠此数据,以便当 model_update 列中的非空值可用时,它会替换同一行中的模型列值。如何做到这一点?
数据框:
+----------------------------------------+-------+--------+-----------+------------+
|id |make |model |make_update|model_update|
+----------------------------------------+-------+--------+-----------+------------+
|1234 |Apple |iphone |null |iphone x |
|4567 |Apple |iphone |null |iphone 8 |
|7890 |Apple |iphone |null |null |
+----------------------------------------+-------+--------+-----------+------------+
理想结果:
+----------------------------------------+-------+---------+
|id |make |model |
+----------------------------------------+-------+---------|
|1234 |Apple |iphone x |
|4567 |Apple |iphone 8 |
|7890 |Apple |iphone |
+----------------------------------------+-------+---------+
【问题讨论】:
【参考方案1】:使用合并。
df=df.withColumn("model",coalesce(col("model_update"),col("model")))
【讨论】:
【参考方案2】:这是一个快速的解决方案:
val df2 = df1.withColumn("New_Model", when($"model_update".isNull ,Model)
.otherwise(model_update))
其中 df1 是您的原始数据框。
【讨论】:
以上是关于Spark:有条件地将 col1 值替换为 col2 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 Scala 在以 Spark 中的列值为条件的广播 Map 上执行查找