我有一个使用 SQLContext 进行查询的数据框:
> df <- sql(sqlContext, "SELECT * FROM myTable")
当我试图获得它的大小
> object.size(df)
1024 bytes
我知道它不是数据帧的真实大小,可能是因为它分布在Spark节点上。要获得真正的尺寸,我需要收集:
> localDf <- collect(df)
> object.size(localDf)
45992 bytes
有时数据框太大而无法放入本地内存。是否有一种简单的方法可以在不将其置于本地的情况下了解数据帧的实际大小?
答案 0 :(得分:1)
执行此操作的一种方法是使用Spark Web UI。在Executors选项卡下,您可以查看存储内存。
答案 1 :(得分:1)
我实际上找到了解决此问题的令人满意的解决方法。我设置以下Spark configuration来加载SparkContext:
spark.driver.maxResultSize=1m
在这种情况下,当结果大于1MB时,spark会返回 org.apache.spark.SparkException ,所以我抓住了它并返回了一条错误消息。