我是Hadoop的新手。
你能告诉我(关键/价值)对吗?价值总是一个吗? reduce步的输出总是一个(键/值)对吗?如果是,那么(键/值)数据如何进一步使用?
请帮帮我。
答案 0 :(得分:1)
由于Hadoop教程中的wordcount示例,我猜你要问的是(键,值)对的'one'值。所以,答案是否定的,并不总是“一个”。
MapReduce的Hadoop实现通过在整个工作流中传递(键,值)对,从输入到输出:
映射步骤:一般来说(有其他特殊情况,具体取决于输入格式),映射器逐行处理分配给它们的分割中的数据;这些行作为(键,值)对传递给map方法,告诉分割中行的偏移量(键)和行本身(值)。然后,它们在输出端产生另一个(键,值)对,其含义取决于您正在实现的映射函数;有时它将是一个变量键和一个固定值(例如在wordcount中,键是单词,值总是'one');其他时候,值将是行的长度,或者以前缀开头的所有单词的总和......无论你想象什么;密钥可以是一个单词,一个固定的自定义密钥......
减少步骤:通常,reducer接收由密钥相同的映射器生成的(key,value)对的列表(这取决于你正在使用的组合器类,当然这通常是这样)。然后,它们在poutput中产生另一个(键,值)对,同样,这取决于应用程序的逻辑。通常,reducer用于聚合关于相同密钥的所有值。
这是一个非常简单快速且不详细的解释,我鼓励您阅读一些关于它的官方文档,或特别是this等文献。
答案 1 :(得分:0)
希望您已经开始使用Wordcount示例学习mapreduce。
键/值对是mapreduce接受执行的记录实体。用于从源读取记录的InputFormat类和用于提交结果的OutputFormat类仅使用记录作为键/值格式进行操作。
键/值格式是最适合表示通过map-partition-sort-combine-shuffle-merge-sort-reduce mapreduce生命周期的不同阶段的记录。请参考,
http://www.thecloudavenue.com/2012/09/why-does-hadoop-uses-kv-keyvalue-pairs.html
键/值数据类型可以是任何内容。您使用的Text / Interwritable键/值是用于wordcount的最佳对。根据您的要求,它实际上可以是任何东西。
请花一些时间阅读hadoop权威指南/雅虎教程以获得更多理解。快乐学习......