gpt4 book ai didi

hadoop - 在 MapReduce 程序的 Reduce 方法中使用 iterable 的集合对象的类型是什么

转载 作者:行者123 更新时间:2023-12-02 21:46:34 26 4
gpt4 key购买 nike

我试图了解 Iterable 在 MapReduce 程序中 Reducer 的 reduce 方法中的用法。该方法的签名是

protected void reduce(KEYIN key,
Iterable<VALUEIN> values,
org.apache.hadoop.mapreduce.Reducer.Context context)
throws IOException,
InterruptedException

我的问题是关于 Iterable 值。值是 List 类型,Set 类型吗?只是好奇。感谢您的帮助。

最佳答案

简短的回答:VALUES 中的类型可以是任何实现 Writable 接口(interface)的类型。例如,IntWritable、LongWritable、Text 等。这些都在 org.apache.hadoop.io 包中。您可以创建自己的。

该定义告诉您,您的 reduce() 方法的实现将使用 2 个参数调用:一个键(参数化类型)和值集合(也是参数化类型)。集合实现对您隐藏;你不在乎它是如何收集的。但是该调用使您可以通过 Iterable 接口(interface)访问该集合,这意味着您可以使用 for (VALUEIN val: values)循环以一次遍历一个值。

例如,假设您实现了一个使用 LongWritable 键和 Text 值的 reducer。您的 reduce 方法将如下所示:

public void reduce(LongWritable key, Iterable<Text> values){...
...
for (Text word: values) {
...do something with word...
}

您会注意到 values 参数没有为您提供 size() 方法,因此您不能说 values.size() 并获取集合中值的数量。那是因为您正在处理一个可能庞大的值集合,其长度是不确定的。这是大数据,宝贝!

关于hadoop - 在 MapReduce 程序的 Reduce 方法中使用 iterable 的集合对象的类型是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24815053/

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