单个RDD记录有多大?

时间:2016-03-09 07:28:45

标签: scala apache-spark iterable

我有这样的RDD:

val graphInfo: RDD[(Long, Int, Long, Long, Iterable[Long])]

节点由Long类型整数表示,并存储在Iterable[Long]的{​​{1}}中。 graphInfo中可以包含多少个元素?对于单个RDD记录的大小有什么限制(如果有的话)?

2 个答案:

答案 0 :(得分:2)

正如已经建议的那样,元素的数量没有限制。

但是,单个RDD记录使用的内存的数量可能会受到限制:Spark将最大分区大小限制为 2GB (见SPARK-6235)。每个分区都是记录集合,因此理论上记录的上限为2GB (当每个分区包含单个记录时达到此限制)。

在实践中,不鼓励超过几兆字节的记录,因为上述限制可能会迫使您人为地增加分区数量,超出最佳分区数量。所有Spark的优化注意事项都旨在根据您的意愿处理尽可能多的记录(给定足够的资源),而不是根据您的意愿处理大小的记录。

答案 1 :(得分:1)

  

Iterable中可以包含多少个元素

迭代可以包含可能无限的元素。例如,如果迭代来自流媒体源,只要该流媒体源可用,您就会收到元素。

  

我不确定RDD的Iterable中是否会有太多元素   使火花崩溃

这又取决于你如何填充iterable。如果你的火花工作有足够的记忆,你应该没事。找出答案的最佳方式是通过跟踪和错误,以及理解sparks limitations for RDD's memory size