检查数据帧(Scala)是否为空的最快方法?
如何以最快的方式检查数据帧(Scala)是否为空?我使用DF.limit(1).rdd.isEmpty,比DF.rdd.isEmpty快,但并不理想。有什么更好的方法吗?我通常先将对检查数据帧(Scala)是否为空的最快方法?,scala,apache-spark,apache-spark-sql,spark-dataframe,Scala,Apache Spark,Apache Spark Sql,Spark Dataframe,如何以最快的方式检查数据帧(Scala)是否为空?我使用DF.limit(1).rdd.isEmpty,比DF.rdd.isEmpty快,但并不理想。有什么更好的方法吗?我通常先将对的调用封装在Try周围: import scala.util.Try val t = Try(df.first) 如果控制逻辑是成功或失败,您可以从中进行匹配: import scala.util.{Success,Failure} t match { case Success(df) => //do
的调用封装在Try
周围:
import scala.util.Try
val t = Try(df.first)
如果控制逻辑是成功
或失败
,您可以从中进行匹配:
import scala.util.{Success,Failure}
t match {
case Success(df) => //do stuff with the dataframe
case Failure(e) =>
// dataframe is empty; do other stuff
//e.getMessage will return the exception message
}
我以前使用过df.first,但我发现它比limit(1)慢?为什么?哦,对不起,我先测试df.first。如果它是空的,就会出现这个错误--java.util.NoSuchElementException:next on empty iteratorOops,我的错误;我的意思是尝试而不是选项
。我已经更新了我的答案。谢谢,但是它的性能比DF.limit(1)好。rdd.isEmpty?看看limit
和head
的源代码,它看起来像是head
调用limit(1)
,所以如果有任何差异,我怀疑在这个例子中会有什么意义。不过,df.head
更干净,更容易理解(至少对我来说)。