Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查数据帧(Scala)是否为空的最快方法?_Scala_Apache Spark_Apache Spark Sql_Spark Dataframe - Fatal编程技术网

检查数据帧(Scala)是否为空的最快方法?

检查数据帧(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

如何以最快的方式检查数据帧(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 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
更干净,更容易理解(至少对我来说)。