You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark Streaming如何仅在新值非空非Null时替换列值

实现方案

你可以通过Spark提供的条件函数实现仅当full_name非空且非Null时替换destination的需求,修改后的代码如下:

.withColumn("destination", 
  when(
    col("full_name").isNotNull && col("full_name") =!= "", 
    col("full_name")
  ).otherwise(col("destination"))
)
.drop("code", "full_name")

逻辑说明

  • 条件判断先通过col("full_name").isNotNull过滤掉Null值,再通过col("full_name") =!= ""过滤掉空字符串,两个条件都满足时才用full_name的值覆盖原有destination
  • 不满足条件时走otherwise分支,直接保留destination列的原始值
  • 最后删除冗余的code和full_name字段即可

如果你不需要额外做空字符串校验,只需要判断非Null,也可以直接用更简洁的coalesce函数实现:

.withColumn("destination", coalesce(col("full_name"), col("destination")))
.drop("code", "full_name")

coalesce会按顺序返回参数中第一个非Null的值,刚好匹配仅full_name非Null时替换的需求。


内容的提问来源于stack exchange,提问作者Eljah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:15:04