gpt4 book ai didi

hadoop - 谁将有机会先执行,Combiner 还是 Partitioner?

转载 作者:可可西里 更新时间:2023-11-01 14:28:06 25 4
gpt4 key购买 nike

阅读以下有关 Hadoop 权威指南第 4 版(第 204 页)的文章后,我感到很困惑

  • 在写入磁盘之前,线程首先将数据分成与最终将成为的 reducer 对应的分区送至。

  • 在每个分区中,后台线程执行一个内存中按键排序,如果有组合函数,则运行在排序的输出上。

  • 运行组合器函数更紧凑的 map 输出,因此写入本地磁盘的数据更少并传递给reducer。

这是我的疑问:

1) 谁将首先执行组合器或分区!!

2) 当自定义组合器和自定义分区出现时,执行步骤层次结构如何以及如何?

3) 我们能否将压缩数据(avro、序列等)提供给自定义组合器,如果是,那么如何!!

寻找一个简短而深入的解释!!

提前致谢。

最佳答案

1/响应在这部分已经指定:“在每个分区内,后台线程执行内存中按键排序,如果有组合器函数,它在排序的输出上运行。”

所以首先在内存中创建分区,如果有自定义组合器,它将在内存中执行,最后将结果溢出到磁盘。

2/自定义组合器和自定义分区将在驱动程序类上指定时存在。

job.setCombinerClass(MyCombiner.class);
job.setPartitionerClass(MyPartitioner.class);

如果没有指定自定义组合器,则不会执行组合器。如果没有指定自定义分区器,则默认执行的分区器是“HashPartitioner”(请参阅​​第 221 页)。

3/是的,这是可能的。不要忘记 combiner 的机制与 reducer 是一样的。 reducer 可以使用压缩数据。如果消费者使用压缩数据,则意味着输入文件格式是压缩的。为此,您可以在驱动程序类上指定指令:

Sequence File case: job.setInputFormatClass(SequenceFileInputFormat.class);
Avro File case: job.setInputFormatClass(AvroKeyInputFormat.class);

关于hadoop - 谁将有机会先执行,Combiner 还是 Partitioner?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32110955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com