如何判断Spark DataFrame指定列是否包含某个特定值
Spark判断指定列是否存在某值的实现方法
可以实现该需求,且支持直接返回单个yes/no标识,无需返回匹配记录。推荐采用带limit(1)的实现方式,避免全量扫描数据,大数据场景下性能更优:
PySpark 示例代码
# 筛选col2=3的记录,最多取1条后判断是否存在匹配 has_3 = df.filter(df.col2 == 3).limit(1).count() > 0 # 输出yes/no print("yes" if has_3 else "no")
Scala Spark 示例代码
import org.apache.spark.sql.functions.col val has3 = df.filter(col("col2") === 3).limit(1).count() > 0 println(if (has3) "yes" else "no")
实现说明
limit(1)的作用是匹配到第一条符合条件的记录后就终止任务,不需要统计所有匹配记录的数量,比直接全量count的性能高很多- 等于判断逻辑会自动跳过null值,无需额外对col2的null值做特殊处理
内容的提问来源于stack exchange,提问作者Anirban Chakraborty
相关产品推荐
相关产品推荐

