我不确定内存足迹的概念。加载例如镶木地板文件时。1GB 并在 Spark 中创建 RDD,每个 RDD 的内存食物打印是多少?
问问题
1201 次
2 回答
5
当您从 parquet 文件中创建 RDD 时,在您对 RDD 运行操作(例如,首先,收集)之前,不会加载/执行任何内容。
现在,您的内存占用很可能会随时间而变化。假设您有 100 个分区并且它们的大小相同(每个 10 MB)。假设您在具有 20 个内核的集群上运行,那么在任何时间点您只需要10MB x 20 = 200MB
在内存中保存数据。
除此之外,鉴于 Java 对象往往占用更多空间,很难准确地说出 1GB 文件将在 JVM 堆中占用多少空间(假设您加载了整个文件)。它可以是我的 2 倍,也可以是更多。
你可以做的一个测试方法是强制你的 RDD 被缓存。然后,您可以在 Storage 下检查 Spark UI,并查看 RDD 占用了多少空间来缓存。
于 2016-05-05T22:06:37.960 回答
1
Marios,在您的记忆投影中,您没有考虑 Parquet 的压缩。1Gb 很可能是未压缩的 5GB。
于 2017-08-05T17:40:29.737 回答