MapReduce设计模式与数据汇总分析
1. MapReduce基础与Pig、Hive概述
在MapReduce中,我们通过模板父类指定输入和输出类型,这些类型对应输入键、输入值、输出键和输出值。输入键和输入值的数据类型必须与映射器的输出键/值类型匹配,输出键和输出值的数据类型必须与作业配置的FileOutputFormat所期望的类型匹配。例如,使用默认的TextOutputFormat时,它可以接受任意两个可写对象作为输出。
Reduce函数与Map函数的签名不同,它提供一个值的迭代器,而非单个值,因为要遍历具有相同键的所有值。任何传递给 context.write 的内容都会被写入文件,每个归约器会创建一个文件,若要合并这些文件,需要编写后处理步骤。
Pig和Hive是MapReduce的高级抽象,它们提供了与“map”或“reduce”无关的接口,但系统会将高级语言解释为一系列MapReduce作业,就像关系数据库管理系统(RDBMS)中的查询规划器将SQL转换为实际的数据操作一样,Hive和Pig将各自的语言转换为MapReduce操作。
使用Java MapReduce而非Pig和Hive有两个核心原因:
- 概念价值:理解MapReduce的底层工作原理,有助于开发者做出更明智的决策,避免因不了解细节而陷入危险情况。
- 功能和成熟度:截至2012年,Pig和Hive在功能和成熟度上尚未达到Java MapReduce的水平,无法解决所有问题。
在能使用Pig或Hive编写MapReduce时,应优先选择它们,因为它们具有可读性、可维护性、开发时间短和自动优化等优点。但在某些
超级会员免费看
订阅专栏 解锁全文
23

被折叠的 条评论
为什么被折叠?



