hadoop中使用mapreduce对文本内容进行分区存储

问题描述

使用partion对一个文本中不同长度的字符串分区存储输入文本如下:Kaka128hua026chao1tao122mao02922想要将不同长度的字符串分在三个文件中存储,代码如下:publicclassTestPartionar{//MapMethodpublicstaticclassMapextendsMapper<LongWritable,Text,Text,Text>{//realizemapmethodprotectedvoidmap(LongWritablekey,Textvalue,Contextcontext)throwsIOException,InterruptedException{//readdifferentlengthstring,typethemindifferenttaginttoken_length=0;StringTokenizerreadline=newStringTokenizer(value.toString());token_length=readline.countTokens();if(token_length==2)context.write(newText("Short"),value);elseif(token_length==3)context.write(newText("Right"),value);elseif(token_length==4)context.write(newText("Long"),value);}}//PartionarMethodpublicstaticclassgetPartionarextendsPartitioner<Text,Text>{publicintgetPartition(Textkey,Textvalue,intpartionNum){return((key.hashCode()&Integer.MAX_VALUE)%partionNum);}}//ReducerMethodpublicstaticclassReduceextendsReducer<Text,Text,Text,Text>{//realizereducemethodprotectedvoidreduce(Textkey,Iterable<Text>value,Contextcontext)throwsIOException,InterruptedException{Iterator<Text>itr=value.iterator();while(itr.hasNext()){context.write(newText(""),itr.next());}}}publicstaticvoidmain(String[]args)throwsIOException,ClassNotFoundException,InterruptedException{Configurationconf=newConfiguration();conf.set("mapred.job.tracker","192.168.108.101:9001");conf.set("fs.default.name","hdfs://192.168.108.101:9000");conf.set("mapred.jar","TestPartionar.jar");Jobjob=newJob(conf,"TestPartionar");String[]ioArgs=newString[]{"test_in","test_out"};String[]otherArgs=newGenericOptionsParser(conf,ioArgs).getRemainingArgs();if(otherArgs.length!=2){System.err.println("Usage:TestPartionar<in><out>");}job.setJarByClass(TestPartionar.class);job.setMapperClass(Map.class);job.setReducerClass(Reduce.class);job.setPartitionerClass(getPartionar.class);job.setNumReduceTasks(3);job.setOutputKeyClass(Text.class);job.setOutputValueClass(Text.class);FileInputFormat.addInputPath(job,newPath(otherArgs[0]));FileOutputFormat.setOutputPath(job,newPath(otherArgs[1]));System.exit(job.waitForCompletion(true)?0:1);}}

但是输出的时候,长度为2和长度为3的字符串混在了一起,请问我的代码哪里是错误的?

解决方案

时间: 2024-09-22 08:38:01

hadoop中使用mapreduce对文本内容进行分区存储的相关文章

在hadoop下运用Mapreduce构建文本索引

在hadoop下运用Mapreduce构建文本索引 樊超 Hadoop是开源的一个分布式系统基础架构,借助Hadoop,可以在不了解分布式底层细节的情况下,开发分布式程序.文本索引在生产生活中有着广泛的应用,从搜索引擎的倒排索引到操作系统的指令都需要使用文本索引.在hadoop环境中构建文本索引,能够为搜索引擎和文档全文索引提供支持,并且同时兼顾了分布式系统的优点.在Hadoop环境中构建本索引的主要价值有:在分布式平台Hadoop建立倒排索引可以提高建立索引的速度,能够方便的存储大数据量,有着

请问java图形界面编程中怎样改变消息提示框中确定按钮的文本内容啊?

问题描述 请问java图形界面编程中怎样改变消息提示框中确定按钮的文本内容啊? 问题补充:恩恩,swing的!请问怎么改啊?xiaolv 写道 解决方案 JOptionPane.setDefaultLocale(Locale.CHINA);JOptionPane.showMessageDialog(null, "11", "22",JOptionPane.INFORMATION_MESSAGE);这个按钮自动集成多语言.只能通来Locale来改.想要OK就用Loca

一脸懵逼学习Hadoop中的MapReduce程序中自定义分组的实现

1:首先搞好实体类对象: write 是把每个对象序列化到输出流,readFields是把输入流字节反序列化,实现WritableComparable,Java值对象的比较:一般需要重写toString(),hashCode(),equals()方法 1 package com.areapartition; 2 3 import java.io.DataInput; 4 import java.io.DataOutput; 5 import java.io.IOException; 6 7 im

linux中批量查找替换文本内容例子

  .批量查找某个目下文件的包含的内容,例如: # grep -rn "要找查找的文本" ./ 2.批量查找并替换文件内容. # sed -i "s/要找查找的文本/替换后的文本/g" `grep -rl "要找查找的文本" ./` sed的其他用法如下: 1.删除行首空格 sed 's/^[ ]*//g' filename sed 's/^ *//g' filename sed 's/^[[:space:]]*//g' filename 2.行

panel-C# winform 如何实现将Label控件的文本内容拖动到任意的Panel控件中。

问题描述 C# winform 如何实现将Label控件的文本内容拖动到任意的Panel控件中. 在C# winform中,有一个form窗体,在form窗体中包函四个Panel控件(panel1.panel2.panel3.panel4)以及三个Label控件(label1.label2.label3). 目前需要实现如下拖动效果: 1.要求将label1控件的text文本内容,手动拖动到任意一个Panel控件中居中显示label1控件text文本内容. 2.并且要求将拖动到Panel控件中的

一天一个shell命令 linux文本内容操作系列-awk命令详解_linux shell

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK

《Hadoop实战第2版》——1.5节Hadoop计算模型—MapReduce

1.5 Hadoop计算模型-MapReduceMapReduce是Google公司的核心计算模型,它将运行于大规模集群上的复杂的并行计算过程高度地抽象为两个函数:Map和Reduce.Hadoop是Doug Cutting受到Google发表的关于MapReduce的论文启发而开发出来的.Hadoop中的MapReduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千台商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集,实现了Hadoop在集群上的数据和

从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构)

 文章转载自: http://blog.csdn.net/v_july_v/article/details/670407 从hadoop框架与MapReduce模式中谈海量数据处理 前言     几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显兴奋,觉得它们很是神秘,而神秘的东西常能勾起我的兴趣,在看过介绍它们的文章或论文之后,觉得Hadoop是一项富有趣味和挑战性的技术,且它还牵扯到了一个我更加感兴趣的话题:海量数据处理.     由此,最近凡是空闲时

文本 编辑器 语义 c++-对特定图文编辑器中的文本内容进行语义分析

问题描述 对特定图文编辑器中的文本内容进行语义分析 举个例子,比如都是感冒,症状也就是哪几样,头痛,流涕等,但每个医生对每个患者的描述却不同, 有头痛或流涕症状的不一定就是感冒,需要做的功能就是从病历描述中读懂语意,从而确定是不是感冒. 或者给出大致可能的判断,供医生参考. 同时最好能筛选出之前的类似的病历. 求问:我该怎么做? 难度究竟有多大? 解决方案 难度有多大,你看看这个问题右边的"相关参考资料"匹配出来的内容和你的问题的关联程度就知道了. 解决方案二: 反正我没有在任何一个H