I am trying to write a Hadoop mapper class in Scala. As a starting point, I have taken a Java example from the book "Hadoop: the Definitive Guide" and tried to port it to Scala.
The original Java class extends org.apache.hadoop.mapreduce.Mapper:
public class MaxTemperatureMapper
extends Mapper<LongWritable, Text, Text, IntWritable>
and overrides the method
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException
This methods gets called and works properly (I tested using a unit test and then run it with yarn).
My attempt at a Scala port is:
class MaxTemperatureMapperS extends Mapper[LongWritable, Text, Text, IntWritable]
and then the method
@throws(classOf[IOException])
@throws(classOf[InterruptedException])
override def map(key: LongWritable, value: Text, context: Context): Unit =
{
...
}
but the Scala compiler issues an error:
error: method map overrides nothing.
So I thought the two methods had the same signature in Scala and Java, but apparently I am missing something. Can you give me some hint?