gpt4 book ai didi

hadoop - 如果只需要将记录插入数据库中,是否需要 reducer ?

转载 作者:行者123 更新时间:2023-12-02 20:49:32 25 4
gpt4 key购买 nike

我想并行处理S3上的大量日志文件。我可能会丢弃不需要的记录,否则,我只会将记录分批插入数据库中。我不一定需要多个键/值对,因此我将一个键映射到所有记录并将其传递给reducer。 reducer只会批处理记录并进行数据库调用。仅在映射器中执行所有操作是否可行?

最佳答案

根据您的描述,可以在映射器中执行此操作。您可以收集一批记录,并确定何时有足够的时间进行批处理插入。 cleanup()方法可用于最终批次,在这种情况下,您可能尚未收集完整批次,并且需要确保插入了其余记录。

从映射器执行此操作的一个问题是,您对并行运行的数量的控制较少,如果输入分割,则它将基于数量。因此,您当中有很多人都试图同时插入数据库,这可能是一个问题。使用 reducer ,您可以更好地控制将要运行的数量。

您没有说您正在使用什么数据库。过去使用reducer对我有帮助的情况是使用分布式DB(在这种情况下为Accumulo),但这可能适用于HBase以及Cassandra。

Accumulo平板电脑服务器分布在hadoop集群周围。因此,一个表将作为多个平板电脑在这些表之间划分。使用BatchWriter,您可以从映射器或化简器插入表中。但是,如果从映射器执行此操作,则插入实际上将在整个群集中随机写入,这将导致更多的网络流量和更多的压缩。使用化简器,您可以获取目标表的分割点,并使用它们对数据进行分区。这样一来,平板电脑的所有数据都将归结到同一 reducer 中。当您以这种方式对数据进行分组时,从reducer进行BatchWriting可大大加快插入速度。

关于hadoop - 如果只需要将记录插入数据库中,是否需要 reducer ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46472702/

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