统计单词

MapReduce统计单词

荒凉一梦 提交于 2020-12-18 19:25:20
一、HDFS个人理解 HDFS是个文件系统,只不过加了个分布式作为文件系统的前缀而已,大概的结构就像LINUX系统。文件大的一个电脑存储不下,怎办?那就想办法存储到不同的机子上呗,于是HDFS就应用而生了。众所周知,文件在硬盘上是以文件块的形式存储。什么句柄啊,真心不懂,只能感知,没人能明白0和1,当然也没必要。 二、Map个人理解 数学函数大家都清楚吧,f(x)=2x,这是一个简单的线性函数。 打开脑洞,将x看成文件中的一行行的字符串,x=“hello hadoop hello mapreduce ” 而此时f(x)的功能是将此字符串按照空格隔开,输出结果为:(hello 1)、(hadoop 1)、(hello 1)、(mapreduce 1)格式。 继续打开脑洞,将x看成一个大文件的一个文件块,比如1万行作为一个文件块,作为x的数值。Hadoop会为每一个文件块构建一个Map任务。 假设,某个HDFS文件有5万行数据,Hadoop将5万行数据切分成5个不同的分片,每个分片有1万行数据,再假设有5台hadoop集群,那么Hadoop会构建5个Map任务,每个Map任务处理一个分片,完全是并行处理的。 三、 Map代码大放送 public static class WordCountMapper extends Mapper<LongWritable,Text,Text

C Primer Plus 第7章 C控制语句:分支和跳转 7.4 一个统计字数的程序

末鹿安然 提交于 2020-04-11 11:03:17
首先,这个程序应该逐个读取字符,并且应该有些方法判断何时停止 ;第二, 它应该能够识别并统计下列单位:字符、行和单词。 下面是伪代码描述: read a character while there is more input increment character count if a line has been read ,increment line count if a word has been read ,increment word count read next character 前面已经有输入循环的模型了: while ((ch=getchar())!=STOP) { .... } 这里的 STOP代表通知输入结束的ch取值。 现在我们暂且选择一个在文本中不常见的字符(|)。 现在来考虑一下循环体。因为程序使用getchar()来输入字符,所以可以在每个循环周期通过递增一个计数器的值来统计字符 。为了统计行数,程序可以检查换行符。如果字符 是换行符,程序就递增行数计数器的值。有个问题是如果STOP字符出现在一行的中间该 怎么办?行数计数应不应该增加呢?一种做法是将它作为一个不完整的行统计,也就是说,该行有字符 而没有换行符。可以通过追踪前一个字符来识别这种情况 。如果STOP之前所读入的最后一个字符不是换行符,就计数一个不完整行。 最棘手的部分是识别单词,首先