gpt4 book ai didi

java - 在hadoop中进行集合成员资格测试的最佳方法是什么?

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

我正在使用hadoop为我的应用程序处理一系列分析记录。我想根据我在他们的流中看到的事件对用户进行分类,然后在以后再次迭代该流时在以后的阶段中使用该信息。例如,假设我想为从未激活我的应用程序的所有用户生成数据。

在我的第一个回合reduce中,我可以反复遍历流来确定谁永远不会激活。

问题是,我应该将“用户X从未激活”的数据放在哪里,以便下次在第二轮映射器中对流进行迭代时可以查看该事实?我有一些想法,但是我不确定哪种方法是正确的:

  • 从我的第一轮 reducer 输出一个包含用户列表的辅助文件,在第二轮中读取它-如何避免将整个文件读入内存,如何处理来自多个前端的多个辅助文件 reducer (是否有一种很好的方式来分类/合并副文件)?
  • 将用户的所有事件缓冲在我的reducer的内存中,以便在将它们输出到磁盘之前,可以将它们全部标记为“未激活”-感觉有些棘手。

  • 是那些“正确的方法”之一,还有我遗漏的另一种方法吗?

    我正在使用AWS Elastic MapReduce。

    最佳答案

    使用mapreduce相当容易。

    映射器:将每个事件都作为键,将用户作为值。

    例如:

    USER_NEVER_ACTIVATED_APP : x
    USER_PAID_FOR_APP : x
    USER_NEVER_ACTIVATED_APP : y

    reducer :您基本上可以为每个事件获取每个用户。
    在这种情况下,将是这样的:
    USER_NEVER_ACTIVATED_APP : x,y
    USER_PAID_FOR_APP : x

    这样,您甚至不需要第二个映射器或工作。

    关于java - 在hadoop中进行集合成员资格测试的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7451409/

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