gpt4 book ai didi

Hadoop 自定义可写与第二遍

转载 作者:行者123 更新时间:2023-12-02 21:58:10 28 4
gpt4 key购买 nike

我正在解析一个使用具有主键和辅助键的记录的大型数据集:

  • 主键
  • 辅助键
  • 附加字段

  • Primary-Secondary 映射是一对多的(主要是“一”)。我想在我的输出中使用每个主节点的唯一辅助节点数。每个主节点最多不会超过几千个辅助节点。

    我可以想到两种方法:
  • 为 Map 的输出定义一个自定义的 Writable 类型,其中包含一组唯一的辅助节点(哈希表、列表等)。在单个 map/reduce 循环中执行所有操作,reducer 在辅助键集上执行联合。
  • 在自己的操作中执行主要/次要计数,并在次要作业中消耗输出。

  • 前者可能会在输出时遇到一些大小问题(其中键集可能会变得很大)。后者将需要对源数据进行两次迭代。

    谁能建议这里有什么更好的方法?

    我也在考虑使用 Hive——也许生成一个包含所有这些数据的表并使用 Hive 请求进行分组更有意义?

    最佳答案

    我会尝试直接从映射器发出“主要”-“次要”键值对,然后在化简器中计算唯一的辅助键。如果最多有几千个二级值 - 它应该没有任何问题。同时,如果您有外部数据集-您可以预期其中的一些数据不规则性,那么对要在 reducer 中处理的唯一辅助节点的数量设置一些上限-例如在达到 100K 值并报告错误时停止处理。

    如果您希望一个分区中的主要值具有良好的局部性 - 组合器将在减少中间数据方面做得很好。

    关于 Hive - 如果数据格式合适,那么尝试一下绝对是有意义的。当我们计划进行严重的 MR 优化,然后发现 Hive 做得足够好时,我曾遇到过一些案例。

    关于Hadoop 自定义可写与第二遍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6714257/

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