【问题标题】:Is there a size limit for Spark's RDDSpark 的 RDD 是否有大小限制
【发布时间】:2018-06-24 22:29:42
【问题描述】:

spark的RDD有大小限制吗?

至于我的具体情况,RDD 可以有 2^400 列吗?

【问题讨论】:

  • @philantrovert stackoverflow.com/questions/48234474/… 骗子?
  • 不确定,虽然这个 naivebayes 输出使用 RDD,但我的问题的答案可能是 2^31
  • @eliasah 我也不确定。 :D
  • 这就是你的问题@ArditMeti 的答案,这就是为什么我想把它作为一个骗子关闭,即使它不是一个完全的骗子:)
  • 除非你想删除你的问题@ArditMeti

标签: apache-spark rdd


【解决方案1】:

Avishek的答案的第一部分是Spark 2.4.0的一点。在写作时,在整个火花源中几乎所有的2GB限制都已经解决了:https://issues.apache.org/jira/browse/SPARK-6235。所说,你的表宽度仍然存在问题。

实用性,即使每个分区只有单行,2 ^ 400仍然是一个巨大的数字,您的RDD也可能保证读/写时期即使是一个巨大的数字!保守假设每个COL具有10个字节的数据,单行具有约:

  (10 bytes / col) * 2.6 * 10^120 cols
= 2.6 * 10^121 bytes
= 2.6 * 10^112 gigabytes

是巨大的!你真的需要2 ^ 400列吗?

【讨论】:

  • 所以从那时提到的时候已经解决了6235个问题,我可以在每个分区中只有一个胖子对象在RDD的每个分区中说出40GB? span>
  • @ awadhesh14大部分时间,spark数据来自hdfs或其他分布式数据存储,99.9999%的时间,数据已经被划分(hdfs =块,elasticsearch = shard等......),因此,如果您有一个40g分区,您的计划中存在错误^^ span>
【解决方案2】:

理论上 RDD 没有大小限制。它对您可以存储的列数也没有任何限制。然而,SPARK 有一个限制,它允许每个 RDD 分区的上限为 2GB。 See Here

因此,您可以将 2^400 列存储在 RDD 中。只要每个分区大小小于 2GB。

现在存在与 2^400 相关的实际问题。因为您必须遵守当前的 spark 限制,所以对于大量列,您需要将数据重新分区到大量分区中。这可能会降低效率。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 2013-12-13
    • 2016-11-15
    • 1970-01-01
    相关资源
    最近更新 更多