计算 SparkR 数据帧的大小

Calculate size of SparkR dataframe

我有一个数据框,是通过使用 SQLContext:

进行查询得到的
> df <- sql(sqlContext, "SELECT * FROM myTable")

当我尝试获取它的大小时

> object.size(df)
1024 bytes

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

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

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

一种方法是使用 Spark Web UI。在执行器选项卡下,您可以查看存储内存。

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

spark.driver.maxResultSize=1m

在这种情况下,当结果大于1MB时,spark会return一个org.apache.spark.SparkException,所以我抓到了,return 错误信息。