词频统计结果与预期不同

来源:3-34 HDFS项目实战之功能实现

weixin_慕神5384537

2021-04-22

代码原本是照着视频敲得,结果和预期不符
现在的代码是从gitHub上复制下来的
跑出来的结果没有变化图片描述

图片描述

txt中每个词间隔三个空格,第二行welcome后面也有三个空格

是因为我的txt跟老师的不一样嘛

另外HDFSWCAPP01.JAVA 里面
import java.util.HashMap; ( 提示:Unused import statement)
ImoocContext.java里面
private Map<Object, Object> cacheMap = new HashMap<Object, Object>();
后面的<>里面也是灰色
图片描述

问题已经解决:
WordCountMapper.java 里面的line.split是按\t进行分割
\t是制表符,不是空格
删除虚拟机里面的hello.txt和wc.out以后
修改本地PC的hello.txt
内容为
hello \t world \t welcome \t \r
hello \t welcome \t
图片描述

重新执行HDFSAPP.java 的方法 copyFromLocalFile() ,将文件上传
重新执行HDFSWCApp01.java,对词频进行统计,得到预期结果
图片描述

错误原因:
(1)将 \t tab 水平制表符理解成 空格,因此本地准备的hello.txt文本内容有误
(2)WordCountMapper.java 的函数,正确代码如下行
String[] words = line.split("\t");
之前的代码是String[] words = line.split(" \t ");
之前的分割方式是“空格 水平制表符 空格”
因为代码出错,导致分割出错

写回答

1回答

Michael_PK

2021-04-22

肯定是你的分隔符不对呢。你确定是空格还是制表符么。不是说对着敲,而是要理解,map方法里面打个断点debug运行不就知道拆分对不对了么

0
2
Michael_PK
回复
weixin_慕神5384537
是的,问题就是出在你说的那,因为肉眼是很难分辨出来的
2021-04-23
共2条回复

Hadoop 系统入门+核心精讲

从Hadoop核心技术入手,掌握数据处理中ETL应用,轻松进军大数据

2397 学习 · 902 问题

查看课程