需求三:手机号码分区

在需求一的基础上,继续完善,将不同的手机号分到不同的数据文件的当中去,需要自定义分区来实现,这里我们自定义来模拟分区,将以下数字开头的手机号进行分开

135 开头数据到一个分区文件

136 开头数据到一个分区文件

137 开头数据到一个分区文件

138 开头数据到一个分区文件

139 开头数据到一个分区文件

其他分区

注意:

必须到集群上运行,否则报错:

java.lang.Exception: java.io.IOException: Illegal partition for 13726230503 (2)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:406)
Caused by: java.io.IOException: Illegal partition for 13726230503 (2)

代码(只列出需求一的基础上修改的部分):

FlowMain:
TextInputFormat.addInputPath(job,new Path(args[0]));
job.setPartitionerClass(FlowPartition.class);
job.setNumReduceTasks(6);
TextOutputFormat.setOutputPath(job,new Path(args[1]));
//    args[0]=/flowCount/in/data_flow.dat
// args[1]=/flowCount/3partition
// hadoop jar flowCount_partition.jar cn.itcast.demo3.flowCount.FlowMain /flowCount/in/data_flow.dat /flowCount/3partition

FlowPartition:
package cn.itcast.demo3.flowCount;

import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Partitioner; public class FlowPartition extends Partitioner<Text,FlowBean>{ @Override
public int getPartition(Text text, FlowBean flowBean, int i) {
String num = text.toString();
if(num != null ){
if(num.startsWith("135"))
return 0;
else if(num.startsWith("136"))
return 1;
else if(num.startsWith("137"))
return 2;
else if(num.startsWith("138"))
return 3;
else if(num.startsWith("139"))
return 4;
else
return 5;
}
return 5;
}
}
												

第2节 mapreduce深入学习:10、手机号码进行分区的更多相关文章

  1. 第2节 mapreduce深入学习:8、手机流量汇总求和

    第2节 mapreduce深入学习:8.手机流量汇总求和 例子:MapReduce综合练习之上网流量统计. 数据格式参见资料夹 需求一:统计求和 统计每个手机号的上行流量总和,下行流量总和,上行总流量 ...

  2. 第2节 mapreduce深入学习:4, 5

    第2节 mapreduce深入学习:4.mapreduce的序列化以及自定义排序 序列化(Serialization)是指把结构化对象转化为字节流. 反序列化(Deserialization)是序列化 ...

  3. 第2节 mapreduce深入学习:14、mapreduce数据压缩-使用snappy进行压缩

    第2节 mapreduce深入学习:14.mapreduce数据压缩-使用snappy进行压缩 文件压缩有两大好处,节约磁盘空间,加速数据在网络和磁盘上的传输. 方式一:在代码中进行设置压缩 代码: ...

  4. 第2节 mapreduce深入学习:7、MapReduce的规约过程combiner

    第2节 mapreduce深入学习:7.MapReduce的规约过程combiner 每一个 map 都可能会产生大量的本地输出,Combiner 的作用就是对 map 端的输出先做一次合并,以减少在 ...

  5. 第2节 mapreduce深入学习:6、MapReduce当中的计数器

    第2节 mapreduce深入学习:6. MapReduce当中的计数器 计数器是收集作业统计信息的有效手段之一,用于质量控制或应用级统计.计数器还可辅助诊断系统故障.如果需要将日志信息传输到map ...

  6. 第2节 mapreduce深入学习:2、3

    第2节 mapreduce深入学习:2.MapReduce的分区:3.分区案例的补充完成运行实现 在MapReduce中,通过我们指定分区,会将同一个分区的数据发送到同一个reduce当中进行处理,例 ...

  7. 第2节 mapreduce深入学习:11、maptask运行机制(多看几遍)

    mapTask运行机制详解以及mapTask的并行度在mapTask当中,一个文件的切片大小使用默认值是128M,就是跟我们一个block块对应大小一样 MapTask运行的整个过程 背下来1.Tex ...

  8. 第2节 mapreduce深入学习:15、reduce端的join算法的实现

    reduce端的join算法: 例子: 商品表数据 product: pidp0001,小米5,1000,2000p0002,锤子T1,1000,3000 订单表数据 order:       pid ...

  9. 第2节 mapreduce深入学习:9、手机上行流量排序

    还是上次那个例子,需求二:上行流量倒序排序(递减排序) 分析,以需求一的输出数据作为排序的输入数据,自定义FlowBean,以FlowBean为map输出的key,以手机号作为Map输出的value, ...

随机推荐

  1. 【BZOJ 2456】 mode

    [题目链接] 点击打开链接 [算法] 此题初看是大水题,只需调用std :: sort即可 但是,n最大500000,显然会超时 而且,内存限制1MB,我们连数组也开不了! 那怎么做呢 ? 我们发现, ...

  2. python requests 调用restful api

    #!/usr/bin/python# -*- coding: utf-8 -*- import jsonimport requestsfrom urlparse import urljoin BASE ...

  3. java笔记之IO4文本复制

    * 复制文本文件. *  * 数据源:从哪里来 * a.txt -- 读取数据 -- FileInputStream  *  * 目的地:到哪里去 * b.txt -- 写数据  -- FileOut ...

  4. B - Crossword solving

    Erelong Leha was bored by calculating of the greatest common divisor of two factorials. Therefore he ...

  5. ROS学习笔记十一:创建URDF 文件并在RVIZ中查看模型

    Unified Robot Description Format,简称为URDF(标准化机器人描述格式),是一种用于描述机器人及其部分结构.关节.自由度等的XML格式文件. 一.创建第一个URDF文件 ...

  6. UCOSII学习 - 创建任务

    本人刚刚学习UCOSII,平台为正点原子的STM32F103战舰开发板,写这篇博客主要是为了学习UCOSII,也方便自己能够一点一点的进步,话不多说直入正题吧. 第一步:在STM32上移植好UCOSI ...

  7. 暴力 ZOJ 1403 Safecracker

    题目传送门 /* 暴力:纯暴力,在家水水 */ #include <cstdio> #include <cstring> #include <algorithm> ...

  8. ACM_跳坑小能手(暴力)

    跳坑小能手 Time Limit: 2000/1000ms (Java/Others) Problem Description: GDUFE-GAME现场有一个游戏场地人头窜动,围观参与游戏的学生在场 ...

  9. String的用法——判断功能

    package cn.itcast_03; /* String的判断功能: 1.boolean equals(Object obj):字符串的内容是否相同,区分大小写 2.boolean equals ...

  10. ie浏览器和火狐浏览器对对容器宽度定义的差异

    首先我们说说firefox和IE对CSS的宽度显示有什么不同: 其实CSS ’width’ 指的是标准CSS中所指的width的宽度,在firefox中的宽度就是这个宽度.它只包含容器中内容的宽度.而 ...