【发布时间】:2016-05-05 21:04:56
【问题描述】:
我不确定内存足迹的概念。加载例如镶木地板文件时。 1GB 并在 Spark 中创建 RDD,每个 RDD 的内存食物打印是多少?
【问题讨论】:
标签: apache-spark compression rdd parquet memory-footprint
我不确定内存足迹的概念。加载例如镶木地板文件时。 1GB 并在 Spark 中创建 RDD,每个 RDD 的内存食物打印是多少?
【问题讨论】:
标签: apache-spark compression rdd parquet memory-footprint
当您从 parquet 文件创建 RDD 时,在您对 RDD 运行操作(例如,首先,收集)之前,不会加载/执行任何内容。
现在您的内存占用量很可能会随着时间的推移而变化。假设您有 100 个分区并且它们的大小相同(每个 10 MB)。假设您在具有 20 个内核的集群上运行,那么在任何时间点您只需要在内存中拥有 10MB x 20 = 200MB 数据。
此外,鉴于 Java 对象往往会占用更多空间,因此很难准确地说出 1GB 文件将在 JVM 堆中占用多少空间(假设您加载了整个文件)。它可以是我的 2 倍,也可以是更多。
您可以做的一个测试方法是强制缓存您的 RDD。然后,您可以在 Storage 下查看 Spark UI,查看 RDD 缓存了多少空间。
【讨论】:
Marios,在您的记忆投影中,您没有考虑 Parquet 的压缩。 1Gb 很可能是未压缩的 5GB。
【讨论】: