gpt4 book ai didi

java - Hadoop:应该映射什么,应该减少什么?

转载 作者:可可西里 更新时间:2023-11-01 15:03:31 26 4
gpt4 key购买 nike

这是我第一次使用 map/reduce。我想编写一个处理大型日志文件的程序。例如,如果我正在处理一个包含 {Student、College 和 GPA} 记录的日志文件,并且想按大学对所有学生进行排序,那么“ map ”部分是什么,“减少”部分是什么?尽管已经阅读了许多教程和示例,但我对这个概念有些困难。

谢谢!

最佳答案

从技术上讲,Hadoop MapReduce 将所有内容都视为键值对;您只需要定义键是什么以及值是什么。 map和reduce的签名是

map: (K1 x V1) -> (K2 x V2) list
reduce: (K2 x V2) list -> (K3 x V3) list

在 map 和 reduce 之间的中间洗牌阶段对 K2 值进行排序。

如果你的输入是这样的

Student x (College x GPA)

那么你的映射器应该只做将 College 值作为键的事情:

map: (s, c, g) -> [(c, s, g)]

以大学为新键,Hadoop 将为您按大学排序。那么,您的 reducer 只是一个普通的老式“identity reducer”。

如果你在实践中进行排序操作(也就是说,这不是作业题),那么查看Hive , 或 Pig .这些系统极大地简化了这些类型的任务。对特定列进行排序变得非常简单。但是,为您在此处确定的任务编写一个 hadoop 流作业总是有教育意义的,可以让您更好地理解映射器和缩减器。

关于java - Hadoop:应该映射什么,应该减少什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7607569/

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