Scala eclipse 插件问题

发布于 2024-11-09 16:31:35 字数 485 浏览 0 评论 0原文

我安装了scala eclipse插件,但是它让我很恼火

它无法正确编译,它表明以下语句编译错误

job setMapperClass classOf[ASPMapReduce.Map]

类型不匹配;找到:java.lang.Classcom.ebay.twitch.ASPMapReduce.Map 需要:java.lang.Class[_ <: org.apache.hadoop.mapreduce.Mapper]

但实际上 ASPMapReduce.Map 实际上是 org.apache.hadoop.mapreeuce.Mapper 的子类 我可以使用maven编译它成功。但eclipse总是告诉我编译错误

scala eclipse插件出了什么问题?顺便说一句,我将 Scala IDE 2.0.0-beta4 与 Scala 2.9.0.final 用于 Eclipse 3.6

I install the scala eclipse plugin, but it make me annoyed

It cannot compile correctly, it indicate compiling error for the following statement

job setMapperClass classOf[ASPMapReduce.Map]

type mismatch; found : java.lang.Classcom.ebay.twitch.ASPMapReduce.Map required: java.lang.Class[_ <:
org.apache.hadoop.mapreduce.Mapper]

But actually ASPMapReduce.Map is really a sub class of org.apache.hadoop.mapreeuce.Mapper
And I can use maven to compile it succesffuly. but eclipse always tell me the compiling error

What's wrong with the scala eclipse plugin ? BTW I use the Scala IDE 2.0.0-beta4 with Scala 2.9.0.final for Eclipse 3.6

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月亮坠入山谷 2024-11-16 16:31:36

您的问题似乎与 这个。这个问题产生了 这张票针对 Scala。

更新:此错误已在 Scala 2.9.1 RC2 中修复。

您可以通过使用 Scala 2.8.1 (boo) 来解决该问题,或者看起来很愚蠢,在作业之前定义 Mapper。编译如下:

import org.apache.hadoop._
import org.apache.hadoop.io._
import org.apache.hadoop.conf._
import org.apache.hadoop.mapreduce._

class MyMapper extends Mapper[LongWritable,Text,Text,Text] {
  override def map(key: LongWritable, value: Text, context: Mapper[LongWritable,Text,Text,Text]#Context) {
  }
}

object MyJob {
  def main(args:Array[String]) {
    val job = new Job(new Configuration())
    job.setMapperClass(classOf[MyMapper])
  }
}

Your question appears to have the same root cause as this one. That question spawned this ticket against Scala.

Update: This bug is fixed in Scala 2.9.1 RC2

You can workaround the problem by using Scala 2.8.1 (boo) or, silly as it seems, defining the Mapper before the Job. The following compiles:

import org.apache.hadoop._
import org.apache.hadoop.io._
import org.apache.hadoop.conf._
import org.apache.hadoop.mapreduce._

class MyMapper extends Mapper[LongWritable,Text,Text,Text] {
  override def map(key: LongWritable, value: Text, context: Mapper[LongWritable,Text,Text,Text]#Context) {
  }
}

object MyJob {
  def main(args:Array[String]) {
    val job = new Job(new Configuration())
    job.setMapperClass(classOf[MyMapper])
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文