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

Java中如何过滤DataFrame特定列至少有一个非空值的行

Spark DataFrame过滤至少一个非空行(Java环境)

原始DataFrame结构如下:

NAMECOLUMN_1COLUMN_2
name_1nullsome_value
name_2some_valuenull
name_3nullnull

需求是过滤掉COLUMN_1和COLUMN_2均为null的行,保留至少有一个非空值的行,最终得到如下结果:

NAMECOLUMN_1COLUMN_2
name_1nullsome_value
name_2some_valuenull

你之前的代码错误在于使用了and逻辑,这会要求COLUMN_1和COLUMN_2同时非空,而原始数据中没有满足该条件的行,所以所有行都被过滤掉了。

正确实现方式

方式一:使用or逻辑判断至少一个非空

直接判断COLUMN_1非空 或者 COLUMN_2非空,完全匹配需求:

import org.apache.spark.sql.functions;
import static org.apache.spark.sql.functions.col;

Column filter = col("COLUMN_1").isNotNull().or(col("COLUMN_2").isNotNull());
df.filter(filter).show();

方式二:取反"两个都为空"的判断

先判断COLUMN_1和COLUMN_2同时为空,再对这个条件取反,同样能达到过滤效果:

import org.apache.spark.sql.functions;
import static org.apache.spark.sql.functions.col;

Column filter = col("COLUMN_1").isNull().and(col("COLUMN_2").isNull()).not();
df.filter(filter).show();

以上两种方式都能正确保留name_1和name_2的行,过滤掉name_3的行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:45:36