別の努力で、私はこのリンクをたどろうとしました。
1)以下を使用してJarライブラリをhadoopにコピーしました。
hadoop fs -copyFromLocal JTS.jar /someHadoopFolder/JTS.jar
2)次に、構成を次のように変更しました。
Configuration conf = new Configuration();
Job job = new Job(conf);
job.setJobName("TEST JOB");
List<String> other_args = parseArguments(args, job);
DistributedCache.addFileToClassPath(new Path("/someHadoopFolder/JTS.jar"), conf);
job.setMapOutputKeyClass(LongWritable.class);
job.setMapOutputValueClass(Text.class);
job.setOutputKeyClass(LongWritable.class);
job.setOutputValueClass(Text.class);
job.setMapperClass(myMapper.class);
//job.setCombinerClass(myReducer.class);
//job.setReducerClass(myReducer.class);
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
String inPath = other_args.get(0);
String outPath = other_args.get(1);
TextInputFormat.setInputPaths(job, inPath);
TextOutputFormat.setOutputPath(job, new Path(outPath));
TextInputFormat.setMinInputSplitSize(job, 32 * MEGABYTES);
TextInputFormat.setMaxInputSplitSize(job, 32 * MEGABYTES);
job.setJarByClass(myFile.class);
job.waitForCompletion(true);
3)チュートリアルには、「マッパーでキャッシュされたファイルを使用する」と書かれているので、マッパーは次のようになります。
public static class myMapper extends Mapper<LongWritable, Text, LongWritable, Text>{
private Path[] localArchives;
private Path[] localFiles;
public void configure(Configuration conf) throws IOException {
localArchives = DistributedCache.getLocalCacheArchives(conf);
localFiles = DistributedCache.getLocalCacheFiles(conf);
}
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException{
//ENVELOPE IS FROM THE JTS.JAR library
Envelope e1 = new Envelope(-180, 85, 180, -85);
context.write(key, value);
}
}
これらすべてを実行したにもかかわらず、「Classboutfound」をスローすることでコードは失敗します。何か助けはありますか?