【问题标题】:Spark: Data can't fit in memory and I want to avoid write it in disk, can I perform iterations with slices of the data to use only the memory?Spark:数据无法放入内存,我想避免将其写入磁盘,我可以对数据切片执行迭代以仅使用内存吗?
【发布时间】:2018-06-29 16:06:43
【问题描述】:

我有不适合内存的数据。所以,我正在阅读以下链接:

https://stackoverflow.com/a/32582416/9759150

https://stackoverflow.com/a/29518749/9759150

之前与此相关的:https://spark.apache.org/faq.html

如果数据不适合内存,则根据读取 Spark 写入磁盘。但我想避免在磁盘上写入。所以我想知道我是否可以确定我需要迭代数据多少次才能仅在内存上处理它。我可以这样做吗?怎么样?

【问题讨论】:

标签: scala apache-spark


【解决方案1】:

这很难确定性地找到迭代数据集所需的确切时间。

从磁盘和缓存中读取数据后,Spark 会将数据集具体化并使用 tungsten 格式将其表示在内存中。

现在,内存中数据集的大小取决于数据集各列的数据类型。同样由于数据的反序列化,它会比序列化的磁盘数据占用更多的内存。

根据我的经验,将 parquet 磁盘数据装入内存通常需要 3-4 倍的内存。所以如果你在 parquet 中的 HDFS 中有 50G 的数据,可能你需要集群中大约 200G 的内存来缓存完整的数据。

您需要进行反复试验,然后才能在这里得出一个完美的数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多