我正在使用hadoop为我的应用程序处理一系列分析记录。我想根据我在其流中看到的事件对用户进行分类,然后在再次迭代流时在稍后阶段使用该信息。例如,假设我想要从未激活我的应用程序的所有用户生成数据。
作为第一轮减少的一部分,我可以通过迭代一次流来解决那些从未激活过的人。
问题是,我在哪里放置“用户X从未激活”的数据,以便下次我在第二轮映射器中迭代流时,我可以查看这个事实?我有一些想法,但我不确定哪种方式是正确的hadoop方式:
是其中一种“正确的方法”,还有另一种方法,我错过了吗?
我正在使用AWS Elastic MapReduce。
答案 0 :(得分:0)
使用mapreduce非常容易。
映射器:将每个事件作为键发送,将用户作为值发送。
e.G:
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
这样你甚至不需要第二个映射器或工作。