
hdfs上单机版词频分析小案例
发布日期:2021-05-15 08:56:53
浏览次数:20
分类:精选文章
本文共 1860 字,大约阅读时间需要 6 分钟。
需求
统计HDFS上指定文件中的单词频率,并将结果存储至HDFS上新文件。需求分析
1. 连接HDFS集群,读取指定文件内容; 2. 按行读取文件数据; 3. 将每行文本按空格或Tab键分割为单词数组; 4. 使用Map函数统计每个单词的出现频率,去重处理; 5. 将统计结果按(key-value)格式写入目标文件中; 6. 验证文件是否已成功写入,可通过HDFS命令查看。代码实现
以下是基于Java语言实现的完整解决方案:public class WordCount { private static MapwordFrequencyMap = new HashMap<>(); public static void main(String[] args) throws IOException, InterruptedException, URISyntaxException { Connection_Texture fs = FileSystem.get("hdfs://hadoop01:9000", new Configuration(), "root"); FSDataInputStream inputStream = fs.open(new Path("/data/ghm.txt")); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line = null; while ((line = reader.readLine()) != null) { // 按空格或Tab分割单词 String[] words = line.split("\\s+"); for (String word : words) { Integer count = wordFrequencyMap.getOrDefault(word, 0); if (count >= 0) { count++; wordFrequencyMap.put(word, count); } } } Path outputPath = new Path("/user/hdfs-wordcount/part-r-0001"); FSDataOutputStream outputStream = fs.create(outputPath); TreeSet > entrySet = wordFrequencyMap.entrySet(); for (Map.Entry entry : entrySet) { String entryKey = entry.getKey(); Integer entryValue = entry.getValue(); outputStream.write((entryKey + "=" + entryValue + "\r\n").getBytes()); System.out.println("[INFO] 处理结果:" + entryKey + "=" + entryValue); } reader.close(); inputStream.close(); fs.close(); } }
以上代码实现了对指定HDFS文件的单词频率统计,按键值对存储至目标文件中。开发者可通过hdfs dfs -ls /user/hdfs-wordcount
等命令验证输出结果。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年05月01日 08时56分33秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
JavaSE总结
2019-03-06
手动造轮子——基于.NetCore的RPC框架DotNetCoreRpc
2019-03-06
Python IO编程
2019-03-06
CSS入门总结
2019-03-06
使用 TortoiseGit 时,报 Access denied 错误
2019-03-06
基于 HTML5 WebGL 的污水处理厂泵站自控系统
2019-03-06
django-表单之模型表单渲染(六)
2019-03-06
c++之程序流程控制
2019-03-06
spring-boot-2.0.3之redis缓存实现,不是你想的那样哦!
2019-03-06
有道云笔记 同步到我的博客园
2019-03-06
李笑来必读书籍整理
2019-03-06
Hadoop(十六)之使用Combiner优化MapReduce
2019-03-06
《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
2019-03-06
CoreCLR源码探索(八) JIT的工作原理(详解篇)
2019-03-06
IOS开发Swift笔记16-错误处理
2019-03-07
flume使用中的一些常见错误解决办法 (地址已经使用)
2019-03-07
andriod 开发错误记录
2019-03-07
C语言编译错误列表
2019-03-07