在hadoop中编写一个mapreduce程序,计算在提供的sample.txt文件中每个唯一的5字序列出现的次数。程序的最终输出应该在单独的行中列出5字序列及其计数。
例子:
山姆是个好孩子,他在学校里总是排在前五名。
必须按以下方式处理:
山姆是个好孩子:1
是个好孩子,而且:1
一个好男孩和他:1
好孩子,他总是:1
他总是站着:1
. . . 类似地,如果它发现一个5字序列的重复字符串,它必须显示为2次
我的代码:
public void map(LongWritable key, Text value, Context context ) throws IOException, InterruptedException{
StringBuilder sb = new StringBuilder();
StringTokenizer itr = new StringTokenizer(value.toString());
String[] tokens = new String[itr.countTokens() * 5]
for(int l = 0 ; l<tokens.length;l++){
tokens[l] = itr.nextToken();
}
for(int i = 0; i < tokens.length; i++){
sb.append(tokens[i]);
for(int j = i+1;j<i+5;j++){
sb.append(" ");
sb.append(tokens[j]);
}
word.set(sb.toString());
context.write(word, one);
System.out.println(sb.toString());
sb.setLength(0);
}
暂无答案!
目前还没有任何答案,快来回答吧!