gpt4 book ai didi

java - 同一文件中两个不同键的 Reducer 输出值

转载 作者:可可西里 更新时间:2023-11-01 16:17:46 26 4
gpt4 key购买 nike

您好,我写了一个一般解析 XML 文件的 mapreduce 作业。我能够解析 XML 文件并正确生成所有键值对。我有 6 个不同的键和相应的值。所以我并行运行了 6 个不同的 reducer 。

现在我面临的问题是 reducer 将两个不同的键值对放在同一个文件中,并将剩余的 4 个键值对放在单独的文件中。所以简而言之,在 reducer 输出的 6 个文件中,我得到 4 个具有单键值对的文件和 1 个具有两个键值对的文件和 1 个什么都没有的文件。

我尝试在 Google 和各种论坛上进行研究,唯一得出的结论是我需要一个分区程序来解决这个问题。我是 hadoop 新手,所以有人可以阐明这个问题并帮助我解决这个问题。

我正在研究一个伪节点集群并使用 Java 作为编程语言。我无法在此处共享代码,但仍会尝试简要描述问题。

让我知道需要更多信息,在此先感谢。

最佳答案

只有 6 个键用于 6 个 reducer 并不是 hadoop 的最佳利用方式——虽然 6 个中的每一个都去一个单独的 reducer 会很好,但不能保证。

键不能在 reducer 之间拆分,因此如果您的键少于 6 个,则只有 reducer 的一个子集有任何工作要做。您应该考虑重新考虑您的 key 分配(可能还有输入文件对 hadoop 的适用性),并且可能使用一个系统,以便有足够的 key 在 reducer 之间稍微均匀地分布。

编辑:我相信您可能想要的是 MultipleOutputFormat ,它有方法 generateFileNameForKeyValue(key, value, name) ,允许您生成一个文件以写入每个键,而不是每个 Reducer 只写一个文件。

关于java - 同一文件中两个不同键的 Reducer 输出值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16200907/

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