Hadoop 1.0.4 を Eclipse で使用していますが、sequencefile ライターを使用しているときに、Eclipse によってエラーが発生しています。これが私のコードです
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.BytesWritable;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.SequenceFile.Writer;
import org.apache.hadoop.io.compress.GzipCodec;
public class filemerge {
public static void main(String[] args) throws IOException {
Configuration conf = new Configuration();
FileSystem hdfs = FileSystem.getLocal(conf);
FileSystem local = FileSystem.getLocal(conf);
Path inputDir = new Path(args[0]);
Path hdfsFile = new Path(args[1]);
IntWritable key = null;
BytesWritable value = null;
try {
FileStatus[] inputFiles = local.listStatus(inputDir);
FSDataOutputStream out = hdfs.create(hdfsFile);
if ((conf != null) && (args[0] != null)) {
SequenceFile.Writer writer = SequenceFile.createWriter(conf, Writer.file(out),
Writer.compression(SequenceFile.CompressionType.RECORD, new GzipCodec()),
Writer.keyClass(IntWritable.class), Writer.valueClass(BytesWritable.class));
for (int i=0; i<inputFiles.length; i++) {
System.out.println(inputFiles[i].getPath().getName());
FSDataInputStream in = local.open(inputFiles[i].getPath());
value = new BytesWritable(in.read());
key = new IntWritable(i);
writer.append(key, value);
in.close();
}
out.close();
IOUtils.closeStream(writer);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
「Writer.compression, Writer.valueClass, Writer.keyClass,
型に対して未定義です」と言っているすべてのメソッドに対してSequenceFile.Writer
私を助けてください。