Shuffle过程是会按照Map中输出的key,把数据默认分到一个分区中,那么默认的是如何实现的?

HashPartitioner是Partitioner默认的分区规则,其中numReduceTasks就是指定的Reducer的个数,决定了Reducer作业输出文件的个数。

自定义Partitioner

package com.imooc.bigdata.hadoop.mr.access;import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Partitioner;/*** MapReduce自定义分区规则*/
public class AccessPartition extends Partitioner<Text, Access> {/*** @param phone         手机号* @param access* @param numPartitions* @return*/@Overridepublic int getPartition(Text phone, Access access, int numPartitions) {if (phone.toString().startsWith("13")) {return 0;} else if (phone.toString().startsWith("15")) {return 1;} else {return 2;}}
}

在main方法中配置:

        // 设置自定义分区规则job.setPartitionerClass(AccessPartition.class);// 设置reduce个数job.setNumReduceTasks(3);

这样就将结果输出到不同的文件中去了。

MapReduce自定义Partitioner相关推荐

  1. 获取系统URL访问的前三名(通过Scala方式实现/通过Spark方式实现),Spark将URL访问日志进行分类并通过自定义Partitioner的方式将文件写入到不同分区上

    1.创建Maven项目 创建的过程参考:http://blog.csdn.net/tototuzuoquan/article/details/74571374 2.准备日志文件 url.log的内容类 ...

  2. 使用Mapreduce案例编写用于统计文本中单词出现的次数的案例、mapreduce本地运行等,Combiner使用及其相关的知识,流量统计案例和流量总和以及流量排序案例,自定义Partitioner

    工程结构: 在整个案例过程中,代码如下: WordCountMapper的代码如下: package cn.toto.bigdata.mr.wc; import java.io.IOException ...

  3. hadoop之MapReduce自定义二次排序流程实例详解

    一.概述 MapReduce框架对处理结果的输出会根据key值进行默认的排序,这个默认排序可以满足一部分需求,但是也是十分有限的.在我们实际的需求当中,往往有要对reduce输出结果进行二次排序的需求 ...

  4. MapReduce之Partitioner的理解

    我们知道在执行map任务的时候,会将key/value写入内存或者磁盘. 这个时候我们在往内存写数据的时候,会根据key创建分区. 问题一:为什要创建分区? 我们如果文件很大,我们只使用一个reduc ...

  5. MapReduce自定义Job示例一:高温统计

    一 自定义jar的流程 配置相关的内容 自定义map输出的k,v类(此类必须实现WritableComparable序列化和比较器接口,实现序列化,反序列化和通用排序方法) 自定义Map类(必须继承M ...

  6. MapReduce自定义排序、分区、分组案例

    一.题目 数据:由于数据量比较大,放入百度网盘中链接:      https://pan.baidu.com/s/13vHZ1v7Rw2Vbb5wZrWX0cA 提取码: 6qug  字段说明 班级  ...

  7. MapReduce自定义二次排序流程

    每一条记录开始是进入到map函数进行处理,处理完了之后立马就入自定义分区函数中对其进行分区,当所有输入数据经过map函数和分区函数处理完之后,就调用自定义二次排序函数对其进行排序. MapReduce ...

  8. Mapreduce自定义数据类型

    Hadoop自带的数据类型: Intwritable,LongWritable,Text,xxWritable. 某些情况下:使用自定义的数据类型方便一些(类似java中的pojo). 实现: 实现w ...

  9. MapReduce 自定义计数器

    MapReduce 允许用户编写程序来定义计数器,计数器的值可在 mapper 或 reduce 中增加,计数器由一个 Java 枚举(enum)类型来定义,以便对有关的计数器分组,一个作业可以定义的 ...

最新文章

  1. grub rescue 安装linux,Ubuntu重装启动失败进入修复grub rescue模式
  2. Exception经验之谈,万万没想到被很多团队采纳!
  3. MapInfo常见数据格式
  4. 使用c#调用API函数CreateProcess来运行外部程序
  5. 中继误码率 matlab,关于误码率的问题 急!!!!!
  6. 在 SAP HANA database Explorer 里添加 HDI 容器
  7. HTML5 API详解(16):web socket 全双工通信
  8. python sorted下标_Python学习教程(Python学习路线):第七天-字符串和常用数据结构
  9. Bootstrap 和 LESS
  10. C++访问WebService
  11. 番茄花园xp开机音乐_抱歉,Windows XP的开机音乐骗了你20年
  12. “女主播翻车”骂声不断,店湾妹感慨:主播界怎么了?三观已毁!
  13. 2022上半年朋友圈都在传的10本书,找到了
  14. python速成_速成python
  15. 爱康科技压力大:前三季亏损1.2亿,中泰证券喊话全年净利3.92亿
  16. SpringSecurity之授权
  17. charles mac端代理设置方法(含https)
  18. 平生事,此时凝睇,谁会凭栏意!(4)
  19. android SurfaceView + Camera全屏自适应屏幕尺寸
  20. [APIO2014]连珠线

热门文章

  1. Android开发三 如何安装 Android SDK 和Eclipse 插件
  2. 最新版idea如何在包下建立子包(dao包下建立impl包)
  3. Pytorch中的variable, tensor与numpy相互转化
  4. 配置php.ini文件,关闭错误提示,打开错误日志,设置错误日志路径(亲测)
  5. PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
  6. Linux解决编译Apache出现的问题:configure: error: APR not found
  7. Linux的Nginx三:类型|特点
  8. linux c++ 调用matlab,ubuntu系统下C++调用matlab程序的方法详解
  9. springboot page size过大导致内存溢出_Spring Boot 内存泄露怎么办呢?看这里看这里!!...
  10. uglifyjs报错 webpack_基于vue2.X的webpack基本配置,教你手动撸一个webpack4的配置