【问题标题】:Calculate size of SparkR dataframe计算 Spark 数据框的大小
【发布时间】:2016-02-05 03:58:19
【问题描述】:

我有一个通过使用 SQLContext 进行查询得到的数据框:

> df <- sql(sqlContext, "SELECT * FROM myTable")

当我尝试获取它的大小时

> object.size(df)
1024 bytes

我知道这不是数据帧的实际大小,可能是因为它分布在 Spark 节点上。要获得真正的尺寸,我需要收集它:

> localDf <- collect(df)
> object.size(localDf)
45992 bytes

有时数据框太大而无法放入本地内存。有没有一种简单的方法可以知道数据框的实际大小而无需将其带到本地?

【问题讨论】:

    标签: sparkr


    【解决方案1】:

    一种方法是使用 Spark Web UI。在 Executors 选项卡下,您可以查看 Storage Memory。

    【讨论】:

    • 这是一个解决方案,谢谢!但是,我需要通过代码知道它,这样我就可以避免在本地获取数据帧。
    • 当然。除了将 spark.eventLog.enabled 设置为 true 或使用 spark 监控系统的接收器为您写出这些指标并读入之外,我不知道您将如何以编程方式进行挂钩。
    【解决方案2】:

    我实际上为这个问题找到了一个令人满意的解决方法。我设置了以下Spark configuration 来加载 SparkContext:

    spark.driver.maxResultSize=1m
    

    在这种情况下,当结果大于 1MB 时,spark 会返回 org.apache.spark.SparkException,所以我抓住了它并返回了错误消息。

    【讨论】:

      猜你喜欢
      • 2020-08-03
      • 1970-01-01
      • 2019-01-29
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多