如何在 Scala 2.9.0 中实现 Hadoop Mapper?

2023-11-25

当我从 2.8.1 迁移到 Scala 2.9.0 时,除了 Hadoop 映射器之外,所有代码都可以正常运行。因为我有一些包装对象,所以我总结为以下示例:



import org.apache.hadoop.mapreduce.{Mapper, Job}


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

  }
}

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

  }
}
  

当我在 2.8.1 中运行它时,它运行得很好(并且我在 2.8.1 中有大量生产代码。在 2.9.0 中,我收到以下编译错误:

error: type mismatch;
found   : java.lang.Class[MyMapper](classOf[MyMapper])
required: java.lang.Class[_ <: org.apache.hadoop.mapreduce.Mapper]
job.setMapperClass(classOf[MyMapper])

失败的调用是当我在 Job 对象上调用 setMapperClass 时。这是该方法的定义:

public void setMapperClass(java.lang.Class<? extends org.apache.hadoop.mapreduce.Mapper> cls) throws java.lang.IllegalStateException { /* compiled code */ }

Mapper类本身的定义是这样的:

public class Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>

有人知道我做错了什么吗?在我看来,这个类型基本上是正确的:MyMapper 确实扩展了 Mapper,并且该方法需要扩展 Mapper 的东西。它在 2.8.1 中运行得很好...


尽管看起来很愚蠢,但您可以通过在作业之前定义映射器来解决该问题。编译如下:

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])
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Scala 2.9.0 中实现 Hadoop Mapper? 的相关文章

随机推荐

  • 如何在 WPF 列表框中排序?

    C 4 0 WPF 应用程序 请参阅下面的代码 在启动时显示 单击 abd 后Sort按钮与btnSort Click 单击事件处理程序 如何按 aaa bbb ccc 顺序排序 C 代码 public MainWindow Initial
  • 保存更高分辨率的图表而不弄乱外观

    你们都必须原谅我的无知 因为我最近才开始使用 C 我只是有一个关于 Windows 图表控件的问题 因为我遇到了一个相当愚蠢的问题 我有一个程序 其中有一些报告 其中包括漂亮的窗口图表来表示一些数据 但是 我一直将这些图表保存到文件中以供各
  • Python 多处理中的子级与父级通信

    我正在编写一个 python 脚本 它将通过将行发送到不同的进程来处理来快速解析文件 最后 我希望父进程接收每个子进程的结果 然后能够对其进行操作 这是代码 usr bin env python import os import re fr
  • 在 Windows 上将 Anaconda 的根 Python 更新到更新的次要版本没有任何作用

    我在 Windows 上安装了 Anaconda 不是 miniconda Python 2 7 我想将安装的 Python 版本更新到最新的次要版本 2 7 9 我看到该版本可以在以下渠道中找到 conda配置为使用 然而 输入conda
  • 修改 NSEvent 以发送与按下的键不同的键

    我正在尝试创建一个 OS X 键盘挂钩用于辅助技术目的 即不用担心 不是键盘记录器 当用户按下某个键时 我想要prevent真正的按键和send而是一个假按键 我选择的角色 我有以下代码 void hookTheKeyboard CGEve
  • 在 C# 项目中包含 FSharp.Core:解决类型冲突

    我正在使用一些 F 类型 Matrix等 来自 C 因此我需要在我的 C 项目中引用 FSharp Core 程序集 到目前为止 一切都很好 但是 显然 mscorlib dll v4 中定义的某些类型在 FSharp Core v2 中
  • 自定义列表排序顺序

    我有一些清单 例如 mylist1 alpha green mylist2 blue alpha red 我想通过这个自定义排序列表对这两个列表进行排序 red blue green alpha so that mylist1 green
  • 寻找与多边形相交尽可能多次的射线

    这是一个有趣的练习 设 P 是一个简单但不一定是凸多边形 q 是不一定在 P 中的任意点 设计一种有效的算法来找到一条源自 q 且与 P 的最大边数相交的线段 换句话说 如果站在q点 你应该把枪瞄准什么方向 这样子弹才能穿过最多数量的墙壁
  • 选择底部导航选项卡后 Android 清除后退堆栈

    使用最新的导航组件与BottomNavigationView the NavController现在默认保存和恢复选项卡的状态 作为此更改的一部分 onNavDestinationSelected BottomNavigationView
  • 在 Windows 上通过计划任务加载 URL 的推荐方法

    我有一个托管在 Windows 机器上的网页 我需要确保每天至少加载一次 我当前的计划是创建一个计划任务 打开 Internet Explorer 并点击 URL C Program Files Internet Explorer iexp
  • 如何使用 FastAPI 从 HTTP 请求中获取 cookie?

    当有人点击 API 时是否可以获取 cookie 我需要读取每个请求的cookie app get async def root text str sessionKey str Header None print sessionKey re
  • AngularJS 的 batarang Chrome 扩展似乎已损坏

    我将这篇文章添加到了 Github 上类似 最近经历的长系列中 我希望这里有人能找到答案 哦 很好 我不只是愚蠢 尝试从书本上自学 Angular 当它调用使用 batarang 来显示一个小示例脚本的范围和模型时 我启动了 bataran
  • 将“物品”平均分配到桶中(尽最大努力)

    说我要分发y项目到x桶均匀 如果x是的倍数y这个分布将是均匀的 如果不是 我最终会得到0每个桶中的物品 例如 例如 我有3桶 我想分配2每个项目 自从做了分工 2 3 将导致0每个桶的物品 我怎样才能实现 分布1 1 0 这种思维方式应该有
  • 如何判断一个方法中调用了哪些方法?

    我想列出从特定方法调用的所有方法 例如 如果我有以下代码 public void test1 test2 test3 该列表应包含 test2 和 test3 如果可以列出同一类的方法以及另一个类的方法 那就太好了 另外 我想找到一种方法来
  • C#/Excel:解决图表上的最大系列大小

    我需要帮助以编程方式绘制比单个 Excel 系列所能容纳的更多点 根据http office microsoft com en us excel HP100738491033 aspxExcel 2007 图表上可显示的最大点数为 2560
  • Android 中的多级 ExpandableListView

    我正在尝试从给定的未知大小或级别的类别列表创建类别树 所以我试图创建一个通用的可扩展列表 其中可以包含 2 个以上的级别 总体思路是在其布局中向每个有子级的子级添加另一个 ExpandableListView 问题是第二个级别无法打开 看起
  • 在 @PostConstruct 期间使用 @Cacheable 的 Spring 缓存不起作用

    与spring框架中的commit相关https github com spring projects spring framework commit 5aefcc802ef05abc51bbfbeb4a78b3032ff9eee3 初始化
  • Spring Security 3.0.2 的 OpenId 身份验证和自动注册

    我正在使用 spring security 3 0 2 和 OpenId 登录和注册来实现一个应用程序 我可以成功登录 但如果用户未注册 我想要执行以下操作 1 获取一些 OpenId 属性 例如电子邮件和姓名 2 向用户显示仅包含这两个字
  • 如何列出 MySQL 中缓存的查询? (Qcache_queries_in_cache)

    显示 Qcache queries in cache 等状态返回 Variable name Value Qcache queries in cache 327 如何打印这些 327 查询 为了优化 mysql 缓存 我想尝试切换到 按需
  • 如何在 Scala 2.9.0 中实现 Hadoop Mapper?

    当我从 2 8 1 迁移到 Scala 2 9 0 时 除了 Hadoop 映射器之外 所有代码都可以正常运行 因为我有一些包装对象 所以我总结为以下示例 import org apache hadoop mapreduce Mapper