gpt4 book ai didi

java - 从 Java 泛型类继承的 Scala 类

转载 作者:搜寻专家 更新时间:2023-10-31 19:59:43 24 4
gpt4 key购买 nike

我正在尝试用 Scala 编写一个 Hadoop 映射器类。作为起点,我从“Hadoop:权威指南”一书中获取了一个 Java 示例,并尝试将其移植到 Scala。

原始 Java 类扩展 org.apache.hadoop.mapreduce.Mapper:

public class MaxTemperatureMapper
extends Mapper<LongWritable, Text, Text, IntWritable>

并覆盖方法

public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException

此方法被调用并正常工作(我使用单元测试进行测试,然后使用 yarn 运行它)。

我对 Scala 端口的尝试是:

class MaxTemperatureMapperS extends Mapper[LongWritable, Text, Text, IntWritable]

然后是方法

@throws(classOf[IOException])
@throws(classOf[InterruptedException])
override def map(key: LongWritable, value: Text, context: Context): Unit =
{
...
}

但是 Scala 编译器报错:

error: method map overrides nothing.

所以我认为这两种方法在 Scala 和 Java 中具有相同的签名,但显然我遗漏了一些东西。你能给我一些提示吗?

最佳答案

有时最好的方法是让您的 IDE 为您工作:

class Test extends Mapper[LongWritable, Text, Text, IntWritable] {
override def map(key: LongWritable, value: Text, context: Mapper[LongWritable, Text, Text, IntWritable]#Context): Unit = ???
}

在这种情况下,问题是类 Context 的定义“存在于”类 Mapper 中,因此您需要使用 # 语法

关于java - 从 Java 泛型类继承的 Scala 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48692230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com