技术标签: mapreduce Hadoop hadoop 大数据
1、分区:
Hadoop默认分区是根据key的hashCode对ReduceTask个数取模得到的,用户无法控制哪个key存储到哪个分区。
想要控制哪个key存储到哪个分区,需要自定义类继承Partitioner<KEY, VALUE>,
泛型KEY, VALUE分别对应Mapper里的输出key,value,因为分区是在map()之后,环形缓冲区溢写时完成的。
提示:如果ReduceTask的数量大于自定义类中重写的getPartition()设置的分区数时,会产生空的输出
文件part-r-00000
如果ReduceTask的数量小于自定义类中重写的getPartition()设置的分区数时,有一部分分区
数据无处安放,就会报错
如果ReduceTask的数量等于1,则不会走自定义的分区方法,系统默认分区就是1,最终只会输出
一个分区文件
分区号必须从0开始,逐一增加
2、全排序:
最终输出结果只有一个文件,且文件内部有序。实现方式是只设置一个ReduceTask。但该方法在处理大型文件时
效率极低,因为一台机器处理所有文件,完全丧失了MapReduce所提供的并行架构。
1、待处理文本 :data.txt
武汉市 20 男 王五
黄石市 90 男 卢洪河
武汉市 60 女 王喜
黄石市 80 男 赵存福
黄石市 50 男 陈新华
孝感市 30 女 新华源
武汉市 80 男 齐五
孝感市 80 男 齐五
孝感市 23 男 罗修运
武汉市 10 女 赵易
武汉市 25 男 武六七
孝感市 25 男 袁灿裕
武汉市 60 男 武庚
黄石市 60 男 张永军
黄石市 60 男 吴理阳
孝感市 33 男 邓喜潮
孝感市 30 男 廖相俭
武汉市 45 女 赵琪
武汉市 55 女 李真
孝感市 30 男 蒋结万
黄石市 50 男 刘志斌
武汉市 45 男 李志
孝感市 5 男 袁帅
武汉市 70 女 赵雅
孝感市 40 男 张军
黄石市 60 男 吴扬
武汉市 55 女 真贾
孝感市 30 男 蒋一万
2、需求:
分别统计出各市感染人员信息,输出到对应文件中(说明:武汉的人员信息统一输出到一个文件,十堰的人员信息
统一输出到一个文件),
输出结果按照感染人员的年龄做倒叙排列。输出结果举例:
地区 姓名 年龄 性别
武汉 张三 70 女
武汉 李四 50 男
武汉 王五 60 女
武汉 赵六 55 男
3、PersonBean.java
import org.apache.hadoop.io.WritableComparable;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
public class PersonBean implements WritableComparable<PersonBean> {
private String area; // 感染地区
private String name; // 感染姓名
private Integer age; // 感染年龄
private String sex; // 感染性别
public PersonBean() {
}
@Override
public String toString() {
return area + "\t" + name + "\t" + age + "\t" + sex;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
文章浏览阅读822次。https://www.toutiao.com/a6684036824584684044/2019-04-26 11:16:36如果您也想和尤瓦尔·赫拉利探讨人工智能、人类历史、机器算法等议题,欢迎留言。美国时间2019年4月22日,人工智能理论家尤瓦尔·赫拉利和计算机科学教授李飞飞博士,展开了一场【人工智能巨变和人工智能的人性化】的硬核对话,并揭示了人工智能技术快速..._专访尤瓦尔赫拉利
文章浏览阅读4.7k次,点赞2次,收藏8次。from lxml import etreehtml = ''' <li class="tag_1">需要的内容1 <a>需要的内容2</a> </li>'''selector = etree.HTML(html )contents = selector.xpath ( '//li[@class = ..._xpath('string(.)')
文章浏览阅读2.1k次。Alpha 对冲背景作为普通的投资者,大部分投资者都会选择基金这一投资渠道。而面对眼花缭乱的基金产品,投资者如何选择出符合自己风险偏好的基金就显得十分重要。这一选择的过程可能就需要我们对基金产品做一个绩效评价,选出其中表现最好的作为我们的投资组合。而最常见的三个评价标准有下述三个:1、夏普 (Sharpe) 指数:美国经济学家威廉•夏普于 1966 年发表《共同基金的业绩》一文,提出用基金承担单位总风险(包括系统风险和非系统风险)所带来的超额收益来衡量基金业绩,这就是夏普指数。夏普指数通过一定评价_方差最小目标化股指期货的最优对冲
文章浏览阅读4.7k次。#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/socket.h>#include <netinet/in.h>#include <string.h>#include <net/if.h>#include &a_linux如何知道socket套接字连接的网卡名称
文章浏览阅读2.3k次。1、用matlab读取avi 视频(只能读一定压缩各式的avi 电影,这是因为avi视频文件的编码有很多,而matlab只支持部分编码格式。可见http://blog.csdn.net/IdoIwill/article/details/2125838) aviinfo('d:\abc.avi');%显示存在d 盘文件abc.avi 的信息,在matlab2010 版本中,该函数可以换成mmread..._matlab怎么导入视频文件
文章浏览阅读419次。在kali中安装docker时,一直报错,在执行更新apt-upgrade时报错,报错内容如下。报错信息中很明显的一个报错信息就是数字签名校验失败。_kali docker安装apt-update报错
文章浏览阅读788次,点赞8次,收藏9次。注意,方法1原则上可行,但是本人没整好pypcd的环境方法2是利用open3d的环境,基于python3.7绝对可以的_点云pcd转bin文件
文章浏览阅读1.4k次。【代码】html界面释放。_html页面根据页面大小缩放怎么设置
文章浏览阅读148次。19-117、基于STM32单片机智能台灯路灯红外人体感应光照无线APP设计+蓝牙控制设计产品功能描述:本设计由STM32F103C8T6单片机核心板电路+红外传感器电路+光敏电阻电路+高亮LED灯电路+蓝牙模块+拨动开关+电源电路组成。一、通过拨动开关选择系统工作模式:模式1:拨动开关拨上。1、当有人的时候,天越亮,灯越暗,天越暗,灯越亮。2、如果无人,则灯自动熄灭。模式2:拨动开关拨下。1、可以通过手机蓝牙APP控制灯的亮灭。
文章浏览阅读4.9w次,点赞9次,收藏22次。下载游戏1.先去下载个在服务器上下载游戏的工具.(服务器不用安装Steam客户端)所以要借助这个工具SteamCMD下载steamCMD的网站 直接下载steamCMD的压缩包2.解压出来 3.新建一个文件,改名字为 *.bat , 如DownloadUpdateGame.bat,前面什么的不重要,重要是的后缀为.bat 这个是用来下载和更新游戏的,会自动补全缺失的游戏文件 4.用记事本打_srcds
文章浏览阅读51次。1,设置QTableWidget滚动条宽度。myTableWidget->verticalScrollBar()->setStyleSheet("QScrollBar:vertical { width: 100px; }");QTableWidget详解(样式、右键菜单、表头塌陷、多选等) (2013-05-15 09:24:53)转载▼标..._qtablewidget控件自绘
文章浏览阅读2.1k次。【名词解释】多功能酶【填空题】维生素B6包括______、______、______三种物质【判断题】Python是一种开源、免费的高级动态编程语言。 (5.0分)【简答题】请写出程序运行后显示结果(8分) def f(a,b,op): print(eval(a+op+b)) x = '5678' y = '1234' z = '%+-*' for a,b,op in zip(x,y,z): f(..._python中获得字符串 s长度的方法是: