MapReduce自定义Partitioner
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相关推荐
- 获取系统URL访问的前三名(通过Scala方式实现/通过Spark方式实现),Spark将URL访问日志进行分类并通过自定义Partitioner的方式将文件写入到不同分区上
1.创建Maven项目 创建的过程参考:http://blog.csdn.net/tototuzuoquan/article/details/74571374 2.准备日志文件 url.log的内容类 ...
- 使用Mapreduce案例编写用于统计文本中单词出现的次数的案例、mapreduce本地运行等,Combiner使用及其相关的知识,流量统计案例和流量总和以及流量排序案例,自定义Partitioner
工程结构: 在整个案例过程中,代码如下: WordCountMapper的代码如下: package cn.toto.bigdata.mr.wc; import java.io.IOException ...
- hadoop之MapReduce自定义二次排序流程实例详解
一.概述 MapReduce框架对处理结果的输出会根据key值进行默认的排序,这个默认排序可以满足一部分需求,但是也是十分有限的.在我们实际的需求当中,往往有要对reduce输出结果进行二次排序的需求 ...
- MapReduce之Partitioner的理解
我们知道在执行map任务的时候,会将key/value写入内存或者磁盘. 这个时候我们在往内存写数据的时候,会根据key创建分区. 问题一:为什要创建分区? 我们如果文件很大,我们只使用一个reduc ...
- MapReduce自定义Job示例一:高温统计
一 自定义jar的流程 配置相关的内容 自定义map输出的k,v类(此类必须实现WritableComparable序列化和比较器接口,实现序列化,反序列化和通用排序方法) 自定义Map类(必须继承M ...
- MapReduce自定义排序、分区、分组案例
一.题目 数据:由于数据量比较大,放入百度网盘中链接: https://pan.baidu.com/s/13vHZ1v7Rw2Vbb5wZrWX0cA 提取码: 6qug 字段说明 班级 ...
- MapReduce自定义二次排序流程
每一条记录开始是进入到map函数进行处理,处理完了之后立马就入自定义分区函数中对其进行分区,当所有输入数据经过map函数和分区函数处理完之后,就调用自定义二次排序函数对其进行排序. MapReduce ...
- Mapreduce自定义数据类型
Hadoop自带的数据类型: Intwritable,LongWritable,Text,xxWritable. 某些情况下:使用自定义的数据类型方便一些(类似java中的pojo). 实现: 实现w ...
- MapReduce 自定义计数器
MapReduce 允许用户编写程序来定义计数器,计数器的值可在 mapper 或 reduce 中增加,计数器由一个 Java 枚举(enum)类型来定义,以便对有关的计数器分组,一个作业可以定义的 ...
最新文章
- grub rescue 安装linux,Ubuntu重装启动失败进入修复grub rescue模式
- Exception经验之谈,万万没想到被很多团队采纳!
- MapInfo常见数据格式
- 使用c#调用API函数CreateProcess来运行外部程序
- 中继误码率 matlab,关于误码率的问题 急!!!!!
- 在 SAP HANA database Explorer 里添加 HDI 容器
- HTML5 API详解(16):web socket 全双工通信
- python sorted下标_Python学习教程(Python学习路线):第七天-字符串和常用数据结构
- Bootstrap 和 LESS
- C++访问WebService
- 番茄花园xp开机音乐_抱歉,Windows XP的开机音乐骗了你20年
- “女主播翻车”骂声不断,店湾妹感慨:主播界怎么了?三观已毁!
- 2022上半年朋友圈都在传的10本书,找到了
- python速成_速成python
- 爱康科技压力大:前三季亏损1.2亿,中泰证券喊话全年净利3.92亿
- SpringSecurity之授权
- charles mac端代理设置方法(含https)
- 平生事,此时凝睇,谁会凭栏意!(4)
- android SurfaceView + Camera全屏自适应屏幕尺寸
- [APIO2014]连珠线
热门文章
- Android开发三 如何安装 Android SDK 和Eclipse 插件
- 最新版idea如何在包下建立子包(dao包下建立impl包)
- Pytorch中的variable, tensor与numpy相互转化
- 配置php.ini文件,关闭错误提示,打开错误日志,设置错误日志路径(亲测)
- PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
- Linux解决编译Apache出现的问题:configure: error: APR not found
- Linux的Nginx三:类型|特点
- linux c++ 调用matlab,ubuntu系统下C++调用matlab程序的方法详解
- springboot page size过大导致内存溢出_Spring Boot 内存泄露怎么办呢?看这里看这里!!...
- uglifyjs报错 webpack_基于vue2.X的webpack基本配置,教你手动撸一个webpack4的配置