gpt4 book ai didi

hadoop - 如何在单个 Hadoop 节点上写入多条记录

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

我需要帮助解决 Hadoop 问题。
在我的 Java 系统中,我有一个创建 n 记录的函数。每条记录显然是要写入 Hadoop 文本文件中的一行。

问题是:
如何将所有 n 记录保存在同一个 Hadoop 节点中?换句话说,我希望 n 记录被视为唯一记录,以确保如果这些记录之一(或其副本之一)在一个节点上,那么当然还有另一个n-1 条记录也在同一个节点上。

例如,假设我的函数创建:

record1: 5     los angeles    rainy
record2: 8 new york sunny
record3: 2 boston rainy

当我将这三个记录(三行)追加到 Hadoop 的文本文件中时,可能会发生记录 1 转到节点 1,记录 2 转到节点 2,记录 3 转到节点 3。我想知道是否有一种方法可以确保所有三个记录都存储在同一个节点上,例如 node2,并且它们不会存储在不同的节点上。

感谢您的关注。

最佳答案

Hadoop 将根据默认的 HashPartitioner 对元组进行分区,并将具有相同键的元组发送到单个缩减器进行聚合。如果默认的 HashPartitioner 不符合要求,则 custom partitioner可以写。 Here是主干中HashPartitioner的代码。

另一种方法是根据分区策略从映射器发出键,HashPartitioner 会将所有具有相同键的元组发送到其中一个缩减器。

此外,请在 Map 和 Reduce 级别抽象而不是节点级别考虑。 Hadoop 试图隐藏集群的网络拓扑结构。

关于hadoop - 如何在单个 Hadoop 节点上写入多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19362225/

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