gpt4 book ai didi

java - 单词计数中Mapper 中K1和K2的用途是什么?

转载 作者:行者123 更新时间:2023-12-02 22:09:10 25 4
gpt4 key购买 nike

我在系统中配置了Hadoop(hadoop-2.0.5-alpha)。我能够运行单词计数示例。但是我无法理解LongWritbale(作为map方法的第一个参数)的用途,并且如果我想做其他事情而不是字数统计(即不读取文件),那我可以在这里传递什么?

(场景是:我想count在一个HDFS目录中保留多少个文件)?

最佳答案

首先,我建议您在MapReduce上阅读一些不错的文章,书籍等。或者至少尝试使用Google搜索。您的问题表明您尚未进行任何研究,只需在此处发布问题即可。有吗?

既然您是新手,而且这是第一次,我将尝试回答您的问题。但是请将来避免这种情况。

回到您的问题, LongWritbale IntWritbale 等是MapReduce类型,就像您在Java或任何其他语言中具有int,long等。它在map方法中的用法与在任何普通方法或函数中数据类型的用法相同,以表明该方法中使用的变量的类型。如果不指定变量,如何知道变量的类型?简而言之,它代表K1 的类型。

如果我想做其他事情而不是字数统计(即不读取文件),那我该怎么办?

您可以传递任何MR类型,也可以传递您的自定义类型(必须实现Writable和Comparable)作为 KEY 的类型。您的意思是不读取文件 ???

在文件/目录上启动MR作业后,您已经可以访问文件名,文件路径等内容。只是您应该知道如何使用它。

附录:

刚在下面看到您的评论。如果您不想对文件内容进行任何操作,则不必担心输入键/值,即 K1,V1 。请勿触摸 K1 V1 。您应该担心的是输出键/值,即 K2,V2 。如果您只想从映射器中发出文件的路径和名称,则可以执行以下操作:

FileSplit fileSplit = (FileSplit)context.getInputSplit();
String fileName = fileSplit.getPath().getName();
String filePath = fileSplit.getPath().to String();

并从您的映射器中发出。您的map()将如下所示:
public static class Your_Mapper extends
Mapper<LongWritable, Text, Text, Text> {

Text path = new Text();
Text name = new Text();

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

FileSplit fileSplit = (FileSplit)context.getInputSplit();
String fileName = fileSplit.getPath().getName();
String filePath = fileSplit.getPath().to String();
name.set(fileName);
path.set(filePath);
context.write(name, path);

}

}

关于java - 单词计数中Mapper <K1,V1,K2,V2>中K1和K2的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18873233/

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