gpt4 book ai didi

hadoop - 按用户指定的次数将每个数字加倍

转载 作者:可可西里 更新时间:2023-11-01 14:59:55 24 4
gpt4 key购买 nike

我是 hadoop 的新手,我正在通过一些示例进行学习。我目前正在尝试传递一个带有随机整数的文件。对于每个数字,我希望它是基于用户在运行时指定的数字的双倍数。

3536 5806 2545 249 485 5467 1162 8941 962 6457665 6754 889 5159 3161 5401 704 4897 135 9078111 1059 4971 5195 3031 630 6265 827 5882 93589212 9540 676 3191 4995 8401 9857 4884 8002 3701931 875 6427 6945 5483 545 4322 5120 1694 25409039 5524 872 840 8730 4756 2855 718 6612 4125

上面是文件示例。

例如当用户在运行时指定

 jar ~/dissertation/workspace/TestHadoop/src/DoubleNum.jar DoubleNum Integer Output 3

第一行的输出是3536 * 8 5806* 8 2545* 8 249* 8 485* 8 5467* 8 1162* 8 8941* 8 962* 8 6457* 8

因为对于每次迭代,数字将翻倍,所以对于 3 次迭代,数字将为 2^3。如何使用 mapreduce 实现此目的?

最佳答案

要将一项工作链接到下一项工作,请查看: Chaining multiple MapReduce jobs in Hadoop

此外,这可能是了解序列文件的好时机,因为它们提供了一种将数据从一个 map/reduce 作业传递到另一个作业的有效方法。

至于您的特定问题,您在这里不需要缩减器,因此通过将缩减器的数量设置为零使其仅映射。将输出发送到 reducers 只会产生额外的网络开销。 (但是,请注意随着时间的推移创建的文件数量,最终 NameNode 不会欣赏它。每个映射器将创建一个文件。)

我知道您正在尝试将其用作可能更复杂的示例...但在这种情况下,您可以使用一种常见的优化技术:如果您发现自己想要将一个仅限映射器的任务链接到另一个映射中/reduce 作业,您可以将两个映射器压缩在一起。例如,与其乘以 2,然后再乘以 2,再乘以 2,为什么不在同一个映射器中乘以 2,再乘以 2,再乘以?基本上,如果您的所有操作都独立于一个数字或一行,则您可以在同一个映射器中按记录应用迭代。这将显着减少开销。

关于hadoop - 按用户指定的次数将每个数字加倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6654080/

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