【发布时间】:2017-05-17 13:52:25
【问题描述】:
我想检查我创建的数据框是否不为空并且至少有 1 条记录。除了使用 count 方法并检查计数值是否大于 0 之外,还有没有更好的方法。
【问题讨论】:
标签: apache-spark
我想检查我创建的数据框是否不为空并且至少有 1 条记录。除了使用 count 方法并检查计数值是否大于 0 之外,还有没有更好的方法。
【问题讨论】:
标签: apache-spark
不妨这样做:
df.take(1).length == 0
rdd.isEmpty 在内部实现了上述功能。
【讨论】:
.rdd 时,Spark 无法优化某些数据源的查询,例如 JDBC。您的版本使用了所有可能的优化
df.rdd 会花费很多时间吗?
rdd 将行从内部形式反序列化为正常形式 - 请参阅stackoverflow.com/questions/43843470/…
使用rdd.isEmpty:
scala> Seq[(Long, String)]((1L, "a")).toDF.rdd.isEmpty
res0: Boolean = false
scala> Seq[(Long, String)]().toDF.rdd.isEmpty
res1: Boolean = true
【讨论】:
使用RDD的isEmpty
def isEmpty(): Boolean = withScope {
partitions.length == 0 || take(1).length == 0
}
【讨论】: