【问题标题】:Can sparkSQL dataframe exceed the memory?spark SQL 数据帧会超出内存吗?
【发布时间】:2016-04-08 22:55:44
【问题描述】:

我正在使用 SparkSQL 进行一些计算。每 5 分钟就会有一个新的数据帧进来。我需要对最近一周的数据帧进行计算。

这意味着我需要将 12*24*7 = 2016 个数据帧合并为一个大数据帧并运行计算。

大小将超出我的 RAM 大小。我的 Spark 集群中的所有节点总共有 128G 内存,这还不够。

所以我想知道如果数据框太大而无法放入内存会发生什么? spark会暂时将其交换到磁盘吗?我需要明确要求 spark 交换还是自动完成?

【问题讨论】:

  • 可能存在内存问题和长沿袭。
  • 你确实需要为这种工作设置检查点。这项工作很可能会失败。为了回答您的问题,Spark 会自动将数据写入磁盘 (tmp),您不需要设置它,默认情况下它是打开的(尽管您可以将其关闭)。 spark.apache.org/docs/latest/configuration.html
  • @GameOfThrows 由于内存不足,代码确实失败了。我发布了一个新问题来描述我的情况。 stackoverflow.com/questions/36545306/…你能帮忙看看,给点建议吗?
  • @eliasah 谢谢。我的代码确实遇到了 OutOfMemory 问题。你能对这种模式给出一些建议吗?
  • 很抱歉我不能回答这个问题!太宽泛了,什么都可以。打开一个描述您的问题的新问题。在我看来大卫已经回答了这个问题,因为你已经接受了它

标签: apache-spark


【解决方案1】:

您有需要读入的 2016 输入文件吗?如果是这样,spark 的读取函数接受通配符,因此您可以一次读取它们,而不是设置一些循环/读取/合并功能。并且根据您的输入文件,内存中数据框的大小可能比您保存的文件的大小小得多。因此,您的数据框可能适合内存。

为了回答您的问题,如果内存不足,Spark 会根据需要自动溢出到磁盘。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-06
    • 2019-11-27
    • 1970-01-01
    • 2019-09-10
    • 2017-11-15
    • 2017-04-15
    • 2022-12-12
    • 1970-01-01
    相关资源
    最近更新 更多