单词计数

  • 需求:输入小说文本,输出每个单词出现的次数
  • 实现:分map、combine、reduce三个阶段实现

  1 /*  Data Analysis with Java
2 * John R. Hubbard
3 * Aug 4, 2017
4 */
5
6 package com.hongfeng.Chapter11;
7
8 import java.io.File;
9 import java.io.IOException;
10 import java.io.PrintWriter;
11 import java.util.ArrayList;
12 import java.util.Collections;
13 import java.util.HashMap;
14 import java.util.List;
15 import java.util.Map;
16 import java.util.Scanner;
17
18 public class Example1 {
19 public static void main(String[] args) {
20 try {
21 File tempFile = new File("data/Temp.dat");
22 map("data/sonnets/", 80, tempFile);
23
24 Map<String,StringBuilder> hashTable = new HashMap(2500);
25 combine(tempFile, hashTable);
26
27 File outFile = new File("data/Output.dat");
28 reduce(hashTable, outFile);
29 } catch (IOException e) {
30 System.err.println(e);
31 }
32 }
33
34 public static void map(String src, int n, File temp) throws IOException {
35 PrintWriter writer = new PrintWriter(temp);
36 for (int i = 0; i < n; i++) {
37 String filename = String.format("%sSonnet%03d.txt", src, i+1);
38 map(filename, writer);
39 }
40 writer.close();
41 }
42
43 public static void combine(File temp, Map<String,StringBuilder> table)
44 throws IOException {
45 Scanner scanner = new Scanner(temp);
46 while (scanner.hasNext()) {
47 String word = scanner.next();
48 StringBuilder value = table.get(word);
49 if (value == null) {
50 value = new StringBuilder("");
51 }
52 table.put(word, value.append(" 1"));
53 scanner.nextLine(); // scan past the rest of the line (a "1")
54 }
55 scanner.close();
56 }
57
58 public static void reduce(Map<String,StringBuilder> table, File out)
59 throws IOException {
60 PrintWriter writer = new PrintWriter(out);
61 for (Map.Entry<String, StringBuilder> entry : table.entrySet()) {
62 String key = entry.getKey(); // e.g., "speak"
63 String value = entry.getValue().toString(); // e.g., "1 1 1 1 1"
64 reduce(key, value, writer);
65 }
66 writer.close();
67 }
68
69
70 /* Writes the pair (word, 1) for each word in the specified file.
71 */
72 public static void map(String filename, PrintWriter writer)
73 throws IOException {
74 Scanner input = new Scanner(new File(filename));
75 input.useDelimiter("[.,:;()?!\"\\s]+");
76 while (input.hasNext()) {
77 String word = input.next();
78 writer.printf("%s 1%n", word.toLowerCase());
79 }
80 input.close();
81 }
82
83 /* Counts the 1s in the value argument and writes (key, count) to file.
84 */
85 public static void reduce(String key, String value, PrintWriter writer)
86 throws IOException {
87 int count = (value.length() + 1)/2; // e.g. "1 1 1 1 1" => 5
88 writer.printf("%s %d%n", key, count);
89 }
90
91 private static void sort(File file) throws IOException {
92 Scanner input = new Scanner(file);
93 List<String> list = new ArrayList();
94 while (input.hasNext()) {
95 list.add(input.nextLine());
96 }
97 input.close();
98 Collections.sort(list);
99 PrintWriter output = new PrintWriter(file);
100 for (String string : list) {
101 output.println(string);
102 }
103 output.close();
104 }
105 }

参考

java稀疏矩阵乘法

https://www.cnblogs.com/a1439775520/p/13074387.html

mapreduce实现稀疏矩阵乘法

https://my.oschina.net/ssrs2202/blog/494516?p=1

https://blog.csdn.net/liuxinghao/article/details/39958957

hashmap自定义键

https://blog.csdn.net/weixin_30502965/article/details/95265093

https://blog.csdn.net/weixin_33881426/article/details/112074005

https://blog.csdn.net/u011311291/article/details/87873756

https://blog.csdn.net/Revivedsun/article/details/96225010

[Java] 数据分析 -- 大数据的更多相关文章

  1. 一句话了解JAVA与大数据之间的关系

    大数据无疑是目前IT领域的最受关注的热词之一.几乎凡事都要挂上点大数据,否则就显得你OUT了.如果再找一个可以跟大数据并驾齐驱的IT热词,JAVA无疑是跟大数据并驾齐驱的一个词语.很多人在提到大数据的 ...

  2. python、Java、大数据和Android的薪资如何?

    莫名其妙,从去年年底开始,Python这个东西在中国,突然一下子就火起来了,直至现在,他的热度更是超越了java,成为软件工程师最为关注的话题.Python之所以能火起来,很大一方面是因为大数据.人工 ...

  3. 1月中旬值得一读的10本技术新书(机器学习、Java、大数据等)!

    1月中旬,阿里云云栖社区 联合 博文视点 为大家带来十本技术书籍(机器学习.Java.大数据等).以下为书籍详情,文末还有福利哦! 书籍名称:Oracle数据库问题解决方案和故障排除手册 内容简介 & ...

  4. 毕业生、程序猿转岗该如何选择Java、大数据和VR?

    许久不见的朋友请我吃饭,期间给我介绍他一个弟弟,说明年要毕业了,还不知道找啥工作,说有培训机构让他学VR.大数据什么的,不知道前景咋样,想咨询一下我.相信很多朋友面临毕业,都不知道该从事哪个行业,自己 ...

  5. 毕业生、程序猿转岗该如何选择Java、大数据和VR?答案在这里!

    许久不见的朋友请我吃饭,期间给我介绍他一个弟弟,说明年要毕业了,还不知道找啥工作,说有培训机构让他学VR.大数据什么的,不知道前景咋样,想咨询一下我.相信很多朋友面临毕业,都不知道该从事哪个行业,自己 ...

  6. Java转大数据开发全套视频资料

    大数据在近两年可算是特别火,有很多人都想去学大数据,有java转大数据的,零基础学习大数据的.但是大数据真的好学吗. 我们先来了解一下什么是大数据. 大数据是指无法在一定时间内用常规软件工具对其内容进 ...

  7. java 与大数据学习较好的网站

    C# C#中 Thread,Task,Async/Await,IAsyncResult 的那些事儿!https://www.cnblogs.com/doforfuture/p/6293926.html ...

  8. Java转型大数据开发全套教程,都在这儿!

    众所周知,很多语言技术已经在长久的历史发展中掩埋,这期间不同的程序员也走出的自己的发展道路. 有的去了解新的发展趋势的语言,了解新的技术,利用自己原先的思维顺利改变自己的title. 比如我自己,也都 ...

  9. java excel大数据量导入导出与优化

    package com.hundsun.ta.utils; import java.io.File; import java.io.FileOutputStream; import java.io.I ...

随机推荐

  1. CodeForces CF862E题解

    \(Part\ 1:\) 我们发现每次修改动的是\(a\)串,所以对于这个答案的公式,\(b_{i+j}\)的部分是可以求出来的.所以我们可以把公式改成如下所示: \(f(j)=|\sum_{i=1} ...

  2. 全网最值得推荐的ELKB日志学习博客-博客地址留存

    博客地址:https://elasticstack.blog.csdn.net/article/details/102728604 博客地址留存,后续解决疑难问题

  3. Redis系列-存储篇string主要操作命令

    Redis系列-存储篇string主要操作命令 通过上两篇的介绍,我们的redis服务器基本跑起来.db都具有最基本的CRUD功能,我们沿着这个脉络,开始学习redis丰富的数据结构之旅,当然先从最简 ...

  4. 【2020.02.01NOIP普及模拟4】怪兽

    [2020.02.01NOIP普及模拟4]怪兽 文章目录 [2020.02.01NOIP普及模拟4]怪兽 题目描述 输入 输出 输入输出样例 数据范围限制 提示 解析 code 题目描述 PYWBKT ...

  5. [DFS]特殊的质数肋骨

    特殊的质数肋骨 时间限制:1000MS----内存限制:256000KB 题目描述 农民约翰母牛总是产生最好的肋骨. 你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们. 农民约翰确定他卖给买 ...

  6. 99%的Python用户都不知道的f-string隐秘技巧

    f-string想必很多Python用户都基础性的使用过,作为Python3.6版本开始引入的特性,通过它我们可以更加方便地向字符串中嵌入自定义内容,但f-string真正蕴含的功能远比大多数用户知道 ...

  7. IDEA如何在一个项目空间下管理多个项目?

    用过Eclipse和IDEA编程工具都知道,Eclipse创建新项目时都是在同一项目空间下,而IDEA一个项目空间只能有一个项目,创建项目时会创建.idea文件. 所以每次创建完项目或者打开另一个项目 ...

  8. IDEA创建XML文件没有Spring Config选项

    我在resources目录下导入3个配置文件时,applicationContext-common.xml文件中有4处http地址红色报错,下图为修正后的图片 了解到可能是由于父工程的pom文件中没有 ...

  9. 《TCP/IP网络编程》学习笔记整理

    简介 本笔记目前已包含 <TCP/IP网络编程>中的前 5 章,后续章节会在近期内补充完整. 我在整理笔记时所考虑的是:在笔记记完后,当我需要查找某个知识点时,不需要到书中去找,只需查看笔 ...

  10. Kubernetes 降本增效标准指南 | 基于K8s 扩展机制构建云上成本控制系统

    作者 王玉君,腾讯云后台高级开发工程师,负责腾讯云原生系统开发及建设. 晏子怡,腾讯云容器产品经理,在K8s弹性伸缩.资源管理领域有丰富的实战经验. 导语 Kubernetes 作为 IaaS 和 P ...