我正在使用hadoop为我的应用程序处理一系列分析记录。我想根据我在他们的流中看到的事件对用户进行分类,然后在以后再次迭代该流时在以后的阶段中使用该信息。例如,假设我想为从未激活我的应用程序的所有用户生成数据。
在我的第一个回合reduce中,我可以反复遍历流来确定谁永远不会激活。
问题是,我应该将“用户X从未激活”的数据放在哪里,以便下次在第二轮映射器中对流进行迭代时可以查看该事实?我有一些想法,但是我不确定哪种方法是正确的:
是那些“正确的方法”之一,还有我遗漏的另一种方法吗?
我正在使用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/