PySpark判断DataFrame为空时报错'list' object has no attribute 'isEmpty'
报错原因
df2.head(1)的返回值是包含DataFrame前1行数据的Python列表,Python原生列表类型没有isEmpty属性,因此触发报错。
解决方案
方案1:直接判断head返回列表(性能优)
空DataFrame调用head(1)会返回空列表,直接判断列表是否为空即可:
# 写法1 print(len(df2.head(1)) == 0) # 写法2 更简洁 print(not df2.head(1))
该方案仅会拉取1条数据到Driver节点,不需要全表扫描,适合大数据量场景。
方案2:使用DataFrame原生isEmpty()方法(最推荐)
PySpark DataFrame本身提供了专门的判空方法,直接调用即可:
print(df2.isEmpty())
这是Spark官方提供的标准判空方式,内部做了性能优化,是最优选择。
方案3:通过count判断(仅适合小表)
如果是数据量极小的表,也可以通过统计行数判断,大数据量场景下全表扫描会严重影响性能,不推荐使用:
print(df2.count() == 0)
内容的提问来源于stack exchange,提问作者Bice
相关产品推荐
相关产品推荐

