有人能解释为什么spark这么做是有意义的吗?
>>> df.filter('COLUMN_A is null').show()
+-----------+----------------+---------------------+-------------+
| COLUMN_A| COLUMN_B| COLUMN_C| COLUMN_D|
+-----------+----------------+---------------------+-------------+
| null| null| null| null|
| null| null| null| null|
| null| null| null| null|
| null| null| null| null|
| null| null| null| null|
| null| null| null| null|
| null| null| null| null|
| null| null| null| null|
| null| null| null| null|
| null| null| null| null|
| null| null| null| null|
| null| null| null| null|
| null| null| null| null|
| null| null| null| null|
| null| null| null| null|
| null| null| null| null|
| null| null| null| null|
| null| null| null| null|
| null| null| null| null|
| null| null| null| null|
+-----------+----------------+---------------------+-------------+
only showing top 20 rows
>>> df.filter('COLUMN_A is null').count()
0
我认为它在解析某些行时会出错(数据文件中没有空行,这是csv),但是它会“空”该行而不是失败,并且还会对某些函数(如count())隐藏错误。
有趣的是,如果我将df写入磁盘(比如带有检查点),那么空值就会出现。
1条答案
按热度按时间dgenwo3n1#
为了获得特定列的所有空值,您需要使用spark
from pyspark.sql import functions as F
df = df.filter(F.col("col").isNull())
post,您可以使用count()来获取该Dataframe的计数df.count()