Have a look at org.apache.hadoop.io.MapWritable, which is a Map for
storing Writable keys and values.

Cheers,
Tom

On Thu, Apr 15, 2010 at 3:17 PM, Eric Sammer <esam...@cloudera.com> wrote:
> You need to implement a custom Writable (the serialization interface
> supported by Hadoop). If you want to use your own custom types as
> keys, they must implement WritableComparable. You could implement a
> "box" custom Writable to hold HashMap or any other type, but you'd
> have to find a way of encoding the type you want to send over the wire
> (probably as a byte array). You could use Java serialization to turn
> the HashMap into a byte buffer and then box that up in a BytesWritable
> (which holds byte[]). It will probably be slow, though.
>
> On Thu, Apr 15, 2010 at 3:04 PM, M B <machac...@gmail.com> wrote:
>> How can I have my mapper output a HashMap as the value in the
>> OutputCollector (so my reducer can work directly on the HashMap key/value
>> pairs)?  I tried just setting things up as HashMap in
>> conf.setOutputValueClass(HashMap.class), but that didn't work.  What do I
>> need to change to allow another type (hashmap or arraylist) to be the output
>> of the map method?
>>
>>      public static class Map extends MapReduceBase implements
>> Mapper<LongWritable, Text, Text, HashMap> {
>> ...
>>        public void map(LongWritable key, Text value, OutputCollector<Text,
>> HashMap> output, Reporter reporter) throws IOException {
>> ...
>>          output.collect(new Text("hello"), myHash);
>> ...
>>
>
>
>
> --
> Eric Sammer
> phone: +1-917-287-2675
> twitter: esammer
> data: www.cloudera.com
>

Reply via email to