RDD内存占用火花

时间:2016-05-05 21:04:57

标签: apache-spark compression rdd parquet memory-footprint

我不确定记忆足印的概念。当加载例如的镶木地板文件时。 1GB并在Spark中创建RDD,每个RDD的内存食物打印是什么?

2 个答案:

答案 0 :(得分:3)

当您从镶木地板文件中创建RDD时,在RDD上运行操作(例如,首先,收集)之前,不会加载/执行任何操作。

现在,您的内存占用率很可能随时间而变化。假设您有100个分区,它们大小相同(每个10 MB)。假设您在具有20个内核的群集上运行,那么在任何时间点您只需要在内存中包含10MB x 20 = 200MB个数据。

除此之外,假设Java对象倾向于占用更多空间,那么1GB文件在JVM堆中将占用多少空间并不容易(假设您加载整个文件) 。它可能是我2倍或它可以更多。

你可以做的一个方法是强制你的RDD被缓存。然后,您可以检查存储下的Spark UI,并查看RDD用于缓存的空间大小。

答案 1 :(得分:0)

马里奥斯,在你的记忆预测中,你没有考虑到Parquet的压缩。 1Gb很可能是5GB未压缩。