【问题标题】:What are the ways to check if DataFrames are empty other than doing a count check in Spark using Java? [duplicate]除了使用 Java 在 Spark 中进行计数检查之外,还有哪些方法可以检查 DataFrames 是否为空? [复制]
【发布时间】:2017-10-22 18:17:22
【问题描述】:
if(df.count()== 0){
    System.out.println("df is an empty dataframe");
 }

上面是一种检查 DataFrame 是否为空的方法,而无需获取 空指针异常。

在 Spark 中有没有其他最好的方法可以做到这一点,因为我担心如果 DataFrame df 获得数百万条记录,上述语句将需要很长时间才能执行。

【问题讨论】:

  • 如果df不是一个有效的对象,上面的代码会得到一个NullPointerException;但通常Object.count() 是一个便宜的电话。
  • 是的,df 被正确地声明和初始化为 DataFrame。但情况是它既可以有值,也可以为空/null。

标签: java apache-spark dataframe nullpointerexception spark-dataframe


【解决方案1】:

计数可能会更慢。相反,您可以只检查 head 元素是否不为空。

df.head(1).isEmpty

为此添加异常处理,因为如果 df 为空,它将抛出 java.util.NoSuchElementException

更新:查看How to check if spark dataframe is empty

【讨论】:

    【解决方案2】:

    我最近遇到了这样一种情况。以下是检查dataframe是否为空的一些方法。

    • df.count() == 0
    • df.head().isEmpty
    • df.rdd.isEmpty
    • df.first().isEmpty

    虽然最好避免使用count(),因为它更贵。但是,在某些情况下,您可能非常确定 dataframe 将只有一行或根本没有记录(例如:在 Hive 查询中执行 max() 函数)。在这种情况下,可以使用count()

    【讨论】:

    • df.head().isEmpty、df.rdd.isEmpty 或 df.first().isEmpty 是否抛出异常?
    • 你有什么异常吗?
    • 根据您的数据集大小,您可能希望避免转换为 RDD:stackoverflow.com/a/37090151
    猜你喜欢
    • 2016-01-03
    • 2022-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多