Java 使用CompositeInputFormat-映射侧连接

Java 使用CompositeInputFormat-映射侧连接,java,hadoop,input,mapreduce,Java,Hadoop,Input,Mapreduce,我正在尝试使用CompositeInputFormat执行映射端连接。映射器函数甚至没有被调用。下面是两个文件 文件A-键#值 文件B-键#值 源代码 Path left= new Path(args[0]); Path rigth = new Path(args[1]) String separator = "#"; Configuration config = new Configuration(); config.set("mapreduce.input.keyvaluelinerecor

我正在尝试使用CompositeInputFormat执行映射端连接。映射器函数甚至没有被调用。下面是两个文件

文件A-键#值

文件B-键#值

源代码

Path left= new Path(args[0]);
Path rigth = new Path(args[1])
String separator = "#";
Configuration config = new Configuration();
config.set("mapreduce.input.keyvaluelinerecordreader.key.value.separator", separator);
String joinExpression = CompositeInputFormat.compose("inner",   KeyValueTextInputFormat.class, left, rigth);
config.set("mapreduce.join.expr", joinExpression);

Job job =  Job.getInstance(config);
job.setJobName("Blah");
job.setJarByClass(Blah.class);
job.setMapperClass(PreditorasMapper.class);
job.setReducerClass(PreditorasReducer.class);
job.setInputFormatClass(CompositeInputFormat.class);
FileOutputFormat.setOutputPath(job, new Path(args[2]));
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
System.exit(job.waitForCompletion(true) ? 0 : 1);

有什么问题吗?

问题出在mapper类中

我使用的是:

public void map(Text key, Text value, Context context) 
而不是:

public void map(Text key, TupleWritable value, Context context) 
public void map(Text key, Text value, Context context) 
public void map(Text key, TupleWritable value, Context context)