一、为什么写
分区和分组在排序中的作用是不一样的,今天早上看书,又有点心得体会,记录一下。
二、什么是分区
1、还是举书上的例子,在8.2.4章节的二次排序过程中,用气温举例,所以这里我也将这个例子说一下。
源数据内容
1900 35°C
1900 34°C
1900 34°C
...
1901 36°C
1901 35°C
书上的例子是为了去除一年当中气温最高的值,那么将年份和气温做了一个复合的key.
2、通过设置了partitioner来进行分区(这里注意了,分区是通过partitioner来进行的)。因为分区是按照年份来进行,所以同年的数据就可以
分区到一个reducer中。但是这样的分区是不能做到对气温划分的,所以分区后的结果如下:
上面这个图是书上的,我只是截取下来而已。可以看到,partition实现了年份同一分区,但是不是一个分组。注意看后面的2条竖线,通过截断表示。
3、如果想把同一年份的气温分组到一起,那么需要做分组的控制。在reducer中以年份部分来分组值,那么同一年的记录就会分到同一个reduce组中。
结果如下:
注意看一下后面2条竖线,和上面的对比,分区和分组相同,那么在reduce输出的时候,只需要取第一个value就能达到输出一年最高气温的目的。
三、总结
1、以上内容是对hadoop全文指南的二次排序的个人理解,可能写的比较晦涩,建议看看8.4.2这个章节。
2、分区和分组是不同的概念,并且进行的阶段也是不同的。
3、一般来说,想要做到分区和分组的排序,key一般都是复合的组合(例如年份和气温构成了key)。
4、分在同一组的<key,value>一定同属一个分区。在一个分区的<key,value>可重载"job.setGroupingComparatorClass(a.class);"中的a类的
compare方法重新定义分组规则,同一组的value做为reduce的输入。
4、写的不对或有错误的地方,可留言或发邮件交流dajuezhao@gmail.com
分享到:
相关推荐
5. **Reduce任务**:Reduce函数从多个Map任务的输出中收集相同分区的键值对,对其进行规约操作,最终生成最终结果。 6. **源码解析**:理解Hadoop MapReduce的源码有助于优化和调试作业。例如,`org.apache.hadoop....
2. **MapReduce的工作原理**:解释Map和Reduce阶段,以及中间键/值对的概念,如何处理数据分区和排序。 3. **SolrCloud与Hadoop集成**:SolrCloud是Solr的分布式版本,它可以与Hadoop生态系统无缝集成,实现文档的...
Partitioner 是 Map/Reduce 框架中的一个重要组件,负责将 Mapper 的输出进行分区,以便 Reduce 任务能够正确地处理它们。 Reporter 是 Map/Reduce 框架中的一个组件,负责报告作业的执行状态和进度。 ...
在Hadoop生态系统中,MapReduce是一种分布式编程模型,主要用于处理和生成大数据集。它通过将大规模数据分割成小块,然后在多台机器上并行处理这些数据块,最后将结果汇总,从而实现高效的批量数据处理。MapReduce的...
标题中的“使用Map-Reduce对大规模图进行排名和半监督分类”是指利用MapReduce编程模型处理大规模图数据,实现图的排序(如PageRank)和半监督学习中的分类任务。MapReduce是由Google提出的一种分布式计算框架,适用...
**任务执行与环境**:Map-Reduce框架提供了丰富的API,允许用户监控任务的执行状态,包括任务进度、错误日志、内存使用情况等,有助于及时发现和解决执行过程中的问题。 **作业提交与监控**:用户可通过Hadoop...
MapReduce模型主要由两个主要阶段组成:Map阶段和Reduce阶段,以及一个可选的Shuffle和Sort阶段。Map阶段将输入数据拆分成键值对,并对其进行局部处理;Reduce阶段则对Map阶段的结果进行全局聚合,以生成最终的输出...
- **任务执行**:Map阶段处理每个分区中的数据,Reduce阶段汇总结果。 - **结果返回**:最终的总销售额被返回给客户端。 #### 五、未来工作方向 随着Hive在Facebook的成功应用,未来的Hive将进一步完善其功能,...
它通过将任务分解为一系列可并行执行的Map任务和Reduce任务,实现了对海量数据的有效处理。在这个名为"MapReduceProject.rar"的压缩包中,我们将会深入探讨MapReduce在实现WordCount案例中的应用,同时涵盖了自定义...
为了并行化一个表函数,程序员需要指定一个键来重新分区输入数据,使得数据可以根据这个键进行分组和处理。 ##### 2.2 并行化原理 在Oracle数据库中,并行化的关键在于如何有效地将数据分发给多个处理单元。这主要...
在Hive中,处理数据倾斜的常见方法是增加Map/Reduce作业的数量,通过增加更多的分区来分散数据负载,这类似于将大数据任务拆分成多个小任务来执行。 HiveQL执行过程中,可以将其视为底层的Map/Reduce程序来优化。...
- **Shuffle阶段**:在Map阶段结束后,系统会对所有中间结果进行排序和分区,以便将相同键的键值对分发给同一个Reduce任务处理。 - **Reduce阶段**:在这个阶段,Reduce任务收集相同键的所有键值对,并执行汇总操作...
因此,研究中提出了Map/Reduce化的Apriori算法处理流程,包括用户请求处理、任务分配、数据映射处理、支持度计算和局部频繁项集生成等步骤。通过Master节点的调度,各个DataNode节点并行扫描处理,最终确定全局支持...
该框架将任务分解为一系列较小的任务(Map 和 Reduce),并在集群中的多台计算机上并行执行这些任务。 - **应用场景**:适用于大数据分析、搜索引擎索引构建、日志文件分析等场景。 #### 二、MapReduce 工作原理 1...
MapReduce的易用性体现在程序员只需要关注业务逻辑,即map和reduce函数的实现,而无需关心数据分布、容错机制等复杂问题。这使得在Google内部,数百个MapReduce程序被开发出来,每天有成千上万的MapReduce作业在集群...
2. Shuffle阶段:Shuffle阶段是MapReduce中的一个重要中间步骤,它负责将Map阶段产生的键值对按照键进行分区和排序。每个节点会将相同键的值聚合在一起,为Reduce阶段做准备。这个阶段通常包含网络传输,因此优化...
5. **数据聚合**:对大量数据进行分组和聚合统计,例如,计算每个类别的数据量。 6. **数据分区**:根据特定条件划分数据,为后续的并行计算优化。 在实际应用中,我们还需要编写Driver程序,它负责提交MapReduce...