reducer(带有一个Text键和一个IterableMapWritable值)如何将其所有Map输出到一个序列文件,以便保留其键上的分组?例如,假设映射器将记录发送到缩减器,如下所示:,,}>,,,}>,,}>我希望序列文件写成:key="dog"value={{,,},{,,}}key="cat"value={{,,,}}我猜想我需要创建一个实现可写的自定义值输出类,但我不确定该怎么做,因为据我所知,集合并不真正处理序列文件。我想这样做,以便下一个map/reduce阶段将作为一个单元读入与每个键关联的所有Map。TIA, 最佳答案
当我使用toString()方法运行我的输出时,我得到:#zombieorg.apache.hadoop.io.MapWritable@b779f586#zombiesorg.apache.hadoop.io.MapWritable@c8008ef9#zonaorg.apache.hadoop.io.MapWritable@99e061a1#zoologyorg.apache.hadoop.io.MapWritable@9d0060be#zzporg.apache.hadoop.io.MapWritable@3e52c108这是我的reducer代码,我怎样才能让map值打印出来?pa
实际上,我正在尝试实现一种机器学习算法,该算法要求我将reducer的输出写入文件,然后在下一个映射器中读取该文件。问题是我正在文件中编写在reducer中创建的MapWritable对象,但是现在当我想访问该对象时,它仅作为字符串出现。有什么方法可以在从文件读取时将此对象org.apache.hadoop.io.MapWritable@72d01691转换为实际的MapWritable对象?我在映射器中的部分代码:DoubleWritable[][]Tdata=newDoubleWritable[T.numRows()][T.numColumns()];for(intk=0;k在ja
我正在尝试使用SequenceFile在两个mapReduce程序之间传递数据。我要传递的数据格式为>。由于某种原因,map中的某些条目似乎没有从一个程序传递到另一个程序。这是我的代码,首先是生成deSequenceFileOutput的reducer,然后是从中读取的映射器。公共(public)静态类IntSumReducer扩展Reducer{publicvoidreduce(Textkey,Iterablevalues,Contextcontext)throwsIOException,InterruptedException{MapWritablevector=newMapWri
我有Java(带有map-reducehadoop库):MapWritablemw;我需要在mw的所有MapWritable值上获取迭代器,但是如何?我会写:Iteratorit=((MapWritable)mw.values()).what?我无法替换“什么?”带迭代器。如果我写:mw.values().iterator();我有Iterator而不是MapWritable。 最佳答案 mw.values()返回Collection,如果你需要迭代mw的值,你可以像你说的那样做mw.values().iterator().如果您需
我在我的HadoopMapReduce程序中使用MapWritable。当我将MapWritable映射作为newText(mapName.toString())发出时,我得到以下输出key1org.apache.hadoop.io.MapWritable@396cbd97key2org.apache.hadoop.io.MapWritable@17991de1key3org.apache.hadoop.io.MapWritable@18f63055你能告诉我如何以简单的方式打印它而不是遍历它吗?我知道我们可以简单地通过调用mapName.toString()来打印一个HashMap。