Spark的RDD是否有大小限制

时间:2018-01-16 09:01:39

标签: apache-spark rdd

火花的RDD是否有大小限制?

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

Avishek回答的第一部分从Spark 2.4.0开始有点过时了。在撰写本文时,Spark来源中几乎所有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列吗?