关于Mapreduce Text类型赋值的错误
Mapreduce中Text类型数据被无缘无故替换?
今天偶然看到一个mapreduce demo,直接上手操作
统计两个文件中 最大值
文件中数据格式为 名字 数值
输出为 名字(最大值所对应的名字) 最大值 例如:豪玉 2201
一通编码,但是居然出现如下的结果

赶紧去查看了代码,如下
map阶段就是找出两个文件中各自的最大值
//map阶段
protected void map(LongWritable key,Text value,Context context) throws IOException,
InterruptedException {
// 抛弃无效记录
String [] line = value.toString().split(" ");
// 把line转换为数值
long temp = Long.parseLong(line[1]);
// 比较大小
if (temp >= max) {
name1 = line[0];
// 把val赋值给tempMax
max = temp;
}
}
protected void cleanup(Context context) throws IOException, InterruptedException {
maxValue.set(max);
name.set(name1);
context.write(name,maxValue);
}
reduce阶段再进行一次比较
//reduce阶段如下
private Long max = Long.MIN_VALUE;
private Text mname = new Text();
private String name;
private Text name2 = new Text();
protected void reduce(Text key, Iterable<LongWritable> values, Context context) throws IOException, InterruptedException
{
for(LongWritable value : values){
System.out.println(key+value.toString());
if (value.get()>=max)
{
System.out.println("此时的最大值"+value.get());
name2 = key;
max = value.get();
}
}
}
protected void cleanup(Context context) throws IOException, InterruptedException {
// 设置最大值
LongWritable maxValue = new LongWritable();
maxValue.set(max);
mname.set(name2);
context.write(mname,maxValue);
}
于是开始无脑输出测试
先测试了进入reduce端的数据,无误

测试进入reduce端 if判断中的数据,无误

???
一通改,无果
偶然将 reduce 赋值语句用String类型赋值,发现结果无误
name = key.toString();

进而开始找寻原因,原来是Text类型赋值的时候需要实例化
name2 = new Text(key);
赋值修改如上,经测试无误
关于Mapreduce Text类型赋值的错误的更多相关文章
- Hadoop错误1(Text类型与String类型)
在此类的博客中,博主主要记录的是在Hadoop实践过程中遇到的一些错误,先上一个代码 protected void map(Object key,Text value, Context context ...
- 数据库表中存在Text类型的属性时,写sql语句时需要注意喽!
之前,习惯性地写查询语句时,查询条件用“=”判断.今天写程序的时候,查询时突然报了一个错误:数据类型text 和varchar 在equal to 运算符中不兼容.查看了一下数据库发现,其中有一个属性 ...
- Mysql BLOB和TEXT类型
BLOB是一个二进制大对象,可以容纳可变数量的数据.有4种BLOB类型:TINYBLOB.BLOB.MEDIUMBLOB和LONGBLOB.它们只是可容纳值的最大长度不同. A binary la ...
- sql 里 text类型的操作(转载)
SQL Server中TEXT类型字段值在数据库中追加字符串方法 对text类型字段值进行追加更新的操作,一开始用了简单的update语句试了试,有错误,原来text.ntext类型的字段不能和 va ...
- SpringMVC提交数据遭遇基础类型和日期类型报400错误解决方法
使用SpringMVC开发的时候,页面如果有日期格式的数据,后台接受也是java.util.Date,则报告400错误 .下面是解决方案的演示示例: 这个是实体类,里面createDate就是java ...
- oracle有三种类型的异常错误: 预定义 ( Predefined )错误里面的常见错误
oracle有三种类型的异常错误: 预定义 ( Predefined )错误, 非预定义 ( Predefined )错误, 用户定义(User_define) 错误 预定义 ( Predefined ...
- MySQL varchar 最大长度,text 类型占用空间剖析
MySQL 表中行的最大大小为 65,534(实际行存储从第二个字节开始)字节.每个 BLOB 和 TEXT 列只占其中的 5 至 9 个字节. 那么来验证下 varchar 类型的实际最大长度: 测 ...
- MapReduce输入输出类型、格式及实例
输入格式 1.输入分片与记录 2.文件输入 3.文本输入 4.二进制输入 5.多文件输入 6.数据库格式输入 1.输入分片与记录 1.JobClient通过指定的输入文件的格式来生成数据分片Input ...
- ES使用text类型字段排序报错
elasticsearch text字段排序报错解决使用elasticsearch 进行排序的时候,我们一般都会排序数字.日期.但是在排序text类型的时候就会出现错误. GET xytest/sut ...
随机推荐
- 微信小程序:利用map方法方便获得对象数组中的特定属性值们
- 快速入门Redis调用Lua脚本及使用场景介绍
Redis 是一种非常流行的内存数据库,常用于数据缓存与高频数据存储.大多数开发人员可能听说过redis可以运行 Lua 脚本,但是可能不知道redis在什么情况下需要使用到Lua脚本. 一.阅读本文 ...
- Flannel和Calico网络插件工作流程对比
Flannel和Calico网络插件对比 Calico简介 Calico是一个纯三层的网络插件,calico的bgp模式类似于flannel的host-gw Calico方便集成 OpenStac ...
- 用代码来实践Web缓存
Web缓存是可以自动保存常见文档副本的HTTP设备.当Web请求抵达缓存时,如果本地有"已缓存的副本",就可以从本地存储设备而不是原始服务器中提取这个文档. 上面是<HTTP ...
- Docker搭建Hadoop环境
文章目录 Docker搭建Hadoop环境 Docker的安装与使用 拉取镜像 克隆配置脚本 创建网桥 执行脚本 Docker命令补充 更换镜像源 安装vim 启动Hadoop 测试Word Coun ...
- tesseract-ocr和tesseract.exe is not installed or it's not in your path问题解决
一.解决方案: 1.http://www.ddooo.com/softdown/94968.htm 打开下载的压缩包,找到"tesseract-ocr-setup-3.02.02.exe ...
- 运营好帮手| 华为DTM助电商类应用实现营销数据快速跟踪
对于电商来说,销售额就是生命线,业务运营人员需要实时关注订单量,交易额,支付转化率等,并从各种维度对比分析,无论增幅或降幅,都需要马上找到原因,落地运营手段进行干预.快速准确的得到各种营销数据就显得格 ...
- PAT-1151(LCA in a Binary Tree)+最近公共祖先+二叉树的中序遍历和前序遍历
LCA in a Binary Tree PAT-1151 本题的困难在于如何在中序遍历和前序遍历已知的情况下找出两个结点的最近公共祖先. 可以利用据中序遍历和前序遍历构建树的思路,判断两个结点在根节 ...
- struts2.0中ognl栈的解析
ongl详解: ValueStack是Struts2的一个接口,字面意义为值栈,OgnlValueStack是 ValueStack的实现类,客 户端发起一个请求,struts2架构会创建一个acti ...
- linux 系统用户与用户组管理
关于/etc/passwd和/etc/shadow /etc/passwd 第1个字段为用户名(第一行中的root就是用户名)第2个字段存放的是该账号的口令.第3个字段为一个数字,这个数字代表的用户标 ...
