繁体   English   中英

如何快速检查pyspark数据框是否为空

[英]How to check if pyspark dataframe is empty QUICKLY

我正在尝试检查我的 pyspark 数据框是否为空,并且我尝试了不同的方法来做到这一点,例如:

df.count() == 0
df.rdd.isEmpty()
df.first().isEmpty()

但是所有这些解决方案都很慢,最多需要 2 分钟才能运行。 如何快速检查我的 pyspark 数据框是否为空? 有人对此有解决方案吗?

先感谢您!

在读取表格后或在任何时间点检查数据帧是否为空的最佳方法是首先使用limit(1) ,这会将行数减少到仅 1,并会提高所有操作的速度您将要做的数据框检查。

df.limit(1).count() == 0
df.limit(1).rdd.isEmpty()
df.limit(1).take()

如果您只是对表进行数据依赖性检查并且只想知道表是否有数据,那么最好在从表本身读取时只应用 limit 1 例如

df = spark.sql("select * from <table> limit 1")

话虽如此,关于检查数据帧是否为空的效率,现在来看看最快的方法是使用.count()first()take(1)相比

此外,如果您看到first()take(1)的后端实现,它完全是在collect()之上实现的,这主要是昂贵的,并且只应在极其必要时使用。

下面提到的时间是基于读取一个包含2390491条记录和138 columns的 parquet 文件。

>>> df.count()
2390491
>>> len(df.columns)
138

count(), take(), first() 花费的时间

注意:这些是将.limit(1)应用于数据帧以检查数据帧是否为空后所花费的时间。

同样最后使用df.rdd.isEmpty()即使在将行数减少到 1 之后也花费了最多的时间。 在此处输入图像描述

希望有帮助..:! :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM