关于Mapreduce Text类型赋值的错误
2021-04-28 19:52
113 查看
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);
赋值修改如上,经测试无误
相关文章推荐
- 关于uint64_t类型变量赋值,防止overflow错误
- 关于 客户端发现响应内容类型为“text/html; charset=utf-8”,但应为“text/xml”的解决方法
- 关于”成员名称不能与它们的封闭类型相同”的错误
- 关于错误:textAppearanceLargePopupMenu requires API level 11 (current min is 8)
- Sql Server关于text类型的替换
- 首页静态生成 错误:客户端发现响应内容类型为“text/html”,但应该是“text/xml”
- 关于在自定义初始化方法里给text赋值失败的解决
- 关于错误“System.Configuration”中不存在类型或命名空间名称“ConfigurationManager”
- 关于“Error: "const char *" 类型的实参与 "LPCWSTR"类型的形参不兼容”错误的解决方案
- 关于编译错误--提领指向不完全类型的指针
- 关于sql取值后,赋值给Label 的属性Text 的问题
- 关于sql server 提示TextHeader脚本错误问题
- 关于字符数组的赋值和字符串赋值以及编译错误:variable-sized object may not be initialized
- 解决关于"因为配置类型不正确,系统无法开始服务器进程..."的错误
- [Caffe] 关于错误Error parsing text-format caffe.NetParameter: 14:17: Invalid escape sequence in string l
- 关于erron错误的类型以及程序表示
- 关于android textview 中英文混合分行错误问题
- 关于SQL语句执行报错1064(timestamp类型的一些错误)
- 关于hibernate配置中timestamp类型字段插入、更新后自动赋值的配置
- 关于InnoDB存储引擎text和blob类型的优化