Spark 教程

Spark SQL

Spark 笔记

Spark MLlib

spark dataframe 过滤指定列为 null 的行数据

Spark DataFrame 原理及操作详解 Spark DataFrame 原理及操作详解


在 spark 中,过滤 dataframe 对象数据的某个列为 null 值(即空值)的行数据可以使用 filter 函数或 where 函数(where 底层本质上还是调用 filter)。

解决方案

dataframe 对象 filter 函数或 where 函数的参数里写类似 sql 的条件表达式,python 代码示例如下:

from pyspark.sql import SparkSession

spark_session = SparkSession.builder.appName('knowledgedict-dataframe').getOrCreate()

# 通过 python 的 None 构造 id 字段为 null 的数据
df = spark_session.createDataFrame(
    schema=['id', 'impression', 'click', 'ctr'],
    data=[(1, 100, 5, 0.05), (None, 10, 3, 0.3), (3, 50, 5, 0.1)]
)
print(df)
df.show()
df = df.filter('id is not null')
df.show()

打印信息如下:

DataFrame[id: bigint, impression: bigint, click: bigint, ctr: double]
+----+----------+-----+----+
|  id|impression|click| ctr|
+----+----------+-----+----+
|   1|       100|    5|0.05|
|null|        10|    3| 0.3|
|   3|        50|    5| 0.1|
+----+----------+-----+----+

+---+----------+-----+----+
| id|impression|click| ctr|
+---+----------+-----+----+
|  1|       100|    5|0.05|
|  3|        50|    5| 0.1|
+---+----------+-----+----+