数据文件在基于排序的混洗中是什么样的?

时间:2019-04-16 15:14:04

标签: apache-spark shuffle

最近,关于基于排序的混洗存在一些困扰我的问题: 1.随机写入过程产生多少个文件?2个内核或2个任务? 2.基于排序的随机播放将产生两种类型的文件:数据文件和索引文件,那么数据文件是什么样的?能给我举个例子吗? 3. dataFile中生成多少个partitionID?根据什么生成partitionID?每个任务都会生成相同范围的partitionID吗?

1 个答案:

答案 0 :(得分:0)

我假设您所说的“基于排序的软键”是SortShuffleWriter

  1. 随机写入过程为每个ShuffleMapTask生成2个文件,一个是索引文件,另一个是数据文件。在此过程中可能会生成临时溢出文件。但是,每个任务最终仅保留两个文件。因此,文件数应为2 *任务。
  2. 索引文件包含用于从数据文件读取特定分区的偏移信息。这些偏移量写为Long,并根据分区的长度进行计算。数据文件包含所有分区,并且每个分区的数据在文件中是分开的。那就是分区的元素没有交织。
  3. 分区ID的数量取决于分区程序,并且任务生成的分区ID的范围可能会有所不同。