开发者社区> 问答> 正文

MapReduce中MapTask工作机制中的溢写阶段详情是什么?

MapReduce中MapTask工作机制中的溢写阶段详情是什么?

展开
收起
游客daliwbfb2wo66 2021-12-04 20:41:41 323 0
1 条回答
写回答
取消 提交回答
  • 步骤1:利用快速排序算法对缓存区内的数据进行排序,排序方式是,先按照分区编号Partition进行排序,然后按照key进行排序。这样,经过排序后,数据以分区为单位聚集在一起,且同一分区内所有数据按照key有序。 步骤2:按照分区编号由小到大依次将每个分区中的数据写入任务工作目录下的临时文件output/spillN.out(N表示当前溢写次数)中。如果用户设置了Combiner,则写入文件之前,对每个分区中的数据进行一次聚集操作。 步骤3:将分区数据的元信息写到内存索引数据结构SpillRecord中,其中每个分区的元信息包括在临时文件中的偏移量、压缩前数据大小和压缩后数据大小。如果当前内存索引大小超过1MB,则将内存索引写到文件output/spillN.out.index中。

    2021-12-04 20:42:01
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink中的两类新型状态存储 立即下载
Apache Flink 流式应用中状态的数据结构定义升级 立即下载
HareQL:快速HBase查询工具的发展过程 立即下载