hashpartitioner如何在spark中工作?

时间:2015-09-29 05:49:22

标签: apache-spark partition

假设我在几个s3文件中有大量数据,每个文件大约5 GB,我使用sc.textFile读取

我需要加入来自这两个文件的数据,因此,我选择使用HashPartitioner技术,并将分区计数设置为20.提交的作业到8个工作节点失败,没有任何有意义的消息。现在我想也许我需要选择适当数量的分区。

显然,spark的想法是根据选择的密钥对所有数据进行分区。为了将它们加载到20个分区中,我想火花将必须通过每行数据读取,计算其散列,并加载到匹配分区的内存中,匹配分区驻留在8个工作节点之一中。如果工作节点中有足够的集体内存,我认为这很顺利。在读取结束时,所有数据都在正确的分区中,在右侧节点的内存中。我到目前为止对吗?

但是,如果总内存不能适合所有数据,我想Spark首先会在某些分区上工作。在处理完这些第一个分区后,它会刷新原始分区并再次从源文件中读取,将剩余数据加载到新分区中。这意味着根据需要多次读取同一文件以使用可用内存处理所有分区。这也是正确的吗?

我是否应该计算分区数,以便至少一个完整分区适合单个节点的内存。是否还有其他指导方针?

0 个答案:

没有答案