当前位置: 首页 > 面试题库 >

在HADOOP映射中使用泛型可减少问题

元昊苍
2023-03-14
问题内容

我的问题对于HADOOP用户而言似乎很愚蠢。但是我对在地图减少问题中使用泛型感到困惑,例如“ WORD COUNT”。

我知道,泛型被基本用于类型转换和类型安全。但是我不能在这里将这个概念联系起来。

在字数问题上,

public class WordCountMapper extends
        Mapper<LongWritable, Text, Text, LongWritable> {
    @Override
    protected void map(LongWritable key, Text value, Context context)
            throws IOException, InterruptedException {
        // TODO Auto-generated method stub
        ...

        }
    }

}

请任何人在这里让我明白泛型的使用 。如果我在问这个问题时犯了任何错误,请纠正我。

现在,我了解将泛型用于键值对(KEY IN,VALUE IN,KEY OUT,VALUE
OUT)。但是我仍然不清楚,为什么在这里将泛型用于键值对。没有其他方法可以做同样的事情。 在这里使用泛型有什么好处?

谢谢!


问题答案:

MapReduce在Mapper和Reducer中专门使用泛型来指定期望读入和写出哪种输入和输出。

在这个例子中你指定你的WordCountMapper扩展Mapper与指定的泛型类Mapper<LongWritable, Text, Text, LongWritable>,其中前两类LongWritable,并Text表示 输入键和值
映射器类期待阅读,而最后两节课Text,并LongWritable表示 输出键和值 类的map方法有望散发出来。

通过该线程讨论,可以更深入地了解为什么在MapReduce中实现了泛型。另外,此JIRA问题提供了更多信息。



 类似资料:
  • 我有一个场景,我必须使用Mapstrt将对象(来自网络请求)转换为对象(数据层)来处理对象映射。我正在尝试创建一个通用的接口,以防止必须为每个资源定义自定义映射器,如下所示: 但这会导致构建错误(但是编译成功): 错误:(13,4)错误:无法为泛型类型变量源生成映射方法。 这不可能吗?如果没有,我将不得不为每个创建一个自定义映射器,并使用根据类类型等告诉反序列化器要使用哪个映射器。。。它可能会变得

  • 问题内容: 我刚刚开始使用hadoop / hbase MapReduce工作(使用cloudera),但我有以下问题: 假设我们有一个带有主要和静态viariable的java类。该类定义与Mapper和Reducer任务相对应的内部类。在启动作业之前,主程序初始化静态变量。在Mapper类中读取此变量。然后使用群集上的“ hadoop jar”启动该类。 我的问题:我看不到其他节点上的Map和

  • 我在单个节点上使用hadoop 1.0.1,并尝试使用python 2.7流式传输制表符分隔的文件。我可以让Michael Noll的字数计数脚本使用hadoop/python运行,但无法让这个极其简单的映射器和减速器工作,只是复制文件。这是映射器: 这是减速器: 以下是输入文件的一部分: mapper和reducer在linux中运行良好: 但在我修改映射器和reducer之后,将输入文件移动到

  • 我有以下形式的地图: 让INNER成为内部地图,即。 例如,我想在一个新的中减少START映射 它们具有相同的键,但值不同。特别是,对于每个键,我希望新的Double值是相应键的INNER映射中值的SUM。 如何使用JAVA 8的流API来实现这一点? 谢谢大家。 编辑:样例地图为 我想要一张像下面这样的新地图:

  • 我在一个大约50个节点的集群上运行2.2.0上的hadoop,我的工作是64个map任务和20个reduce任务。map在大约30分钟内完成,然后所有reduce任务都在运行,但是我发现一个奇怪的日志是这样的:

  • 我想将泛型类型<code>Y</code>的对象映射到另一个泛型类型为<code>X</code>的对象。在mapstruct中有这样的功能吗?或者我必须为通用映射编写自定义映射器吗?当我编译上面的代码时,会出现编译错误。