I think this is a bug, writable object should have default no-argument
constructor.


On Tue, May 11, 2010 at 7:20 AM, Ananth Sarathy
<ananth.t.sara...@gmail.com> wrote:
> Yeah, no I get that. But when you use the sequence file reader example from
> The Hadoop The Defintive Guide book page 106
>
>        reader = new SequenceFile.Reader(fs, path, conf);
>             System.out.println(reader.getKeyClass());
>            System.out.println(reader.getValueClass());
>
>            Writable key = (Writable) ReflectionUtils.newInstance(reader
>                    .getKeyClass(), conf);
>            Writable val = (Writable) ReflectionUtils.newInstance(reader
>                    .getValueClass(), conf);
>
>            LuceneDocumentWrapper ldw = null;
>
>            long position = reader.getPosition();
>            while (reader.next(key, val)) {
>
>                ldw = (LuceneDocumentWrapper) val;
>                System.out.println(ldw.get());
>
>  }
>
> But when using a LuceneDocumentWrapper which uses the interface, I get this
> error
>
> java.lang.RuntimeException: java.lang.NoSuchMethodException:
> org.apache.hadoop.hbase.mapreduce.LuceneDocumentWrapper.<init>()
>    at
> org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:115)
>    at
> com.iswcorp.mapreduce.test.SequenceFileReaderTest.main(SequenceFileReaderTest.java:39)
> Caused by: java.lang.NoSuchMethodException:
> org.apache.hadoop.hbase.mapreduce.LuceneDocumentWrapper.<init>()
>    at java.lang.Class.getConstructor0(Class.java:2706)
>
> Caused by this line    Writable val = (Writable)
> ReflectionUtils.newInstance(reader
>                    .getValueClass(), conf);
>
> which has to do with not having a default constructor, which is why I asked
> the orginal question. Is there some other way to get the values out?
> Ananth T Sarathy
>
>
> On Mon, May 10, 2010 at 11:46 PM, Ted Yu <yuzhih...@gmail.com> wrote:
>
>> Writable is the recommended interface to work with.
>> Writable implementations reuse instances which serves large scale data
>> processing better than JavaSerialization.
>>
>> Cheers
>>
>> On Mon, May 10, 2010 at 6:29 PM, Ananth Sarathy
>> <ananth.t.sara...@gmail.com>wrote:
>>
>> > My team and I were working with sequence files and were using the
>> > LuceneDocumentWrapper. But when I try to get the valcall, i get a no such
>> > method exception from the ReflectionUtils, which is caused because it's
>> > trying to call a default constructor which doesn't exist for that class.
>> >
>> > So my question is  whether there is documentation or limitations to the
>> > type
>> > of objects that can be used with a sequencefile other than the Writable
>> > interface? I want to know if maybe I am trying to read from the file in
>> the
>> > wrong way.
>> > Ananth T Sarathy
>> >
>>
>



-- 
Best Regards

Jeff Zhang

Reply via email to