gpt4 book ai didi

java - Hadoop MapReduce : MapOutputValueClass : Map?

转载 作者:行者123 更新时间:2023-12-01 15:20:10 27 4
gpt4 key购买 nike

我有一个 Java MR 程序。我的 Map 方法的输出是各种字符串/数字,我现在将其放入字符串中。在Reduce 中,我分割字符串并使用参数。现在我想知道这是否不能更容易地完成。

我正在考虑一个映射,其中我将字符串/数字存储为值,并使用描述每个值的命名键。那么这个 Map 将是我的“Value Out”(MapOutputValueClass)。

这可能吗?当我在文档中读到此内容时,我想我的想法无法实现:

键和值类必须可由框架序列化,因此需要实现 Writable 接口(interface)。此外,关键类必须实现 WritableComparable 接口(interface),以方便框架进行排序。

那么您建议我为 MapOutputValueClass 选择什么? :-) 也许拿一个 Map 并将其转换为 ImmutableBytesWritable ?我也不想减慢我的程序...

感谢您的解答!

最佳答案

您可以使用各种字符串/数字编写自己的类。例如,并将其作为映射器的输出值类和 reducer 的输入值类传递。

Class Foo{
String A;
String B;
int c, d;

....
}

在你的映射器中:

public class MyMapper extends Mapper<Text, Text, Text, Foo>{
....
}

在你的 reducer 中:

public class MyReducer extends Reducer<Text, Foo, Text, LongWritable>{
...
}

在你的驱动程序中:

设置映射器输出值类:

job.setMapOutputValueClass(Foo.class);

记住当你 extends Mapper ,需要填写的类按如下顺序:<KEYIN_CLASS, VALUEIN_CLASS, KEYOUT_CLASS, VALUEOUT_CLASS>Reducer 也是如此

关于java - Hadoop MapReduce : MapOutputValueClass : Map<String, 字符串>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11046619/

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