Just an update... my problem seems to be beyond defining generic types.
Ted, I dont know if you have the answer for this question, which is
regarding SequenceFile.
If I am to create a SequenceFile by hand, I can do the following:
<code>
JobConf jobConf = new JobConf(MyClass.class);
JobClient jobClient = new JobClient(jobConf);
FileSystem fileSystem = jobClient.getFs();
SequenceFile.Writer writer = SequenceFile.createWriter(fileSystem,
jobConf, path, Text.class, Text.class);
</code>
After that, I can write all Text-based keys and values by doing this:
<code>
Text keyText = new Text();
keyText.set("mykey");
Text valText = new Text();
valText.set("myval");
writer.append(keyText, valText);
</code>
As you can see, there is no LongWriteable what-so-ever.
However, in a map/reduce job, if I am to specify
<code>
jobConf.setOutputFormat(SequenceFileOutputFormat.class);
</code>
And later in the mapper, if I am to say
<code>
Text newkey = new Text();
newkey.set("AAA");
Text newval = new Text();
newval.set("bbb");
output.collect(newkey, newval);
</code>
It would throw an exception, complaining that the key is not LongWriteable.
So that's a part of the reason that I am having trouble connecting the
pipes - it seems to me that SequenceFile and SequenceFileOutputFormat
are talking about two different kinds of "sequence files"...