PySpark用df.head(1).isEmpty判断DataFrame为空报AttributeError怎么办
错误原因
你调用df.head(1)时,PySpark返回的不是DataFrame对象,而是Python列表:当DataFrame有数据时返回长度为1、元素为Row对象的列表,为空时返回空列表。Python原生列表没有isEmpty属性,因此触发AttributeError。
正确判断方案
- 方案1:基于
head()判断(全版本通用、性能最优)
Spark仅会拉取1条数据到驱动节点,开销极低,适合所有场景:
# 写法1 is_empty = len(df.head(1)) == 0 # 写法2 更简洁 is_empty = not df.head(1)
- 方案2:原生
isEmpty()方法(PySpark 3.3+版本支持)
高版本PySpark提供了官方的判空方法,内部逻辑为limit(1).count() == 0,性能和head()方案持平:
is_empty = df.isEmpty()
- 方案3:基于
count()判断(仅适合小数据量场景)
该方法会扫描全表统计所有行数,大数据集下性能极差,非必要不推荐:
is_empty = df.count() == 0
内容的提问来源于stack exchange,提问作者Padfoot123
相关产品推荐
相关产品推荐

