我有这样的RDD:
val graphInfo: RDD[(Long, Int, Long, Long, Iterable[Long])]
节点由Long类型整数表示,并存储在Iterable[Long]
的{{1}}中。 graphInfo
中可以包含多少个元素?对于单个RDD记录的大小有什么限制(如果有的话)?
答案 0 :(得分:2)
正如已经建议的那样,元素的数量没有限制。
但是,单个RDD记录使用的内存的数量可能会受到限制:Spark将最大分区大小限制为 2GB (见SPARK-6235)。每个分区都是记录集合,因此理论上记录的上限为2GB (当每个分区包含单个记录时达到此限制)。
在实践中,不鼓励超过几兆字节的记录,因为上述限制可能会迫使您人为地增加分区数量,超出最佳分区数量。所有Spark的优化注意事项都旨在根据您的意愿处理尽可能多的记录(给定足够的资源),而不是根据您的意愿处理大小的记录。
答案 1 :(得分:1)
Iterable中可以包含多少个元素
迭代可以包含可能无限的元素。例如,如果迭代来自流媒体源,只要该流媒体源可用,您就会收到元素。
我不确定RDD的Iterable中是否会有太多元素 使火花崩溃
这又取决于你如何填充iterable。如果你的火花工作有足够的记忆,你应该没事。找出答案的最佳方式是通过跟踪和错误,以及理解sparks limitations for RDD's memory size