Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么';在hadoop中进行集合成员资格测试的最佳方法是什么?_Java_Hadoop_Amazon Web Services_Elastic Map Reduce - Fatal编程技术网

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

Java 什么';在hadoop中进行集合成员资格测试的最佳方法是什么?,java,hadoop,amazon-web-services,elastic-map-reduce,Java,Hadoop,Amazon Web Services,Elastic Map Reduce,我正在使用hadoop为我的应用程序处理一系列分析记录。我想根据我在流中看到的事件对用户进行分类,然后在稍后的阶段再次迭代流时使用这些信息。例如,假设我想生成所有从未激活我的应用程序的用户的数据 作为第一轮reduce的一部分,我可以通过在流上迭代一次来确定谁从未激活 问题是,我应该将“用户X从未激活”的数据放在哪里,以便下次我在第二轮映射器中迭代流时可以查找该事实?我有一些想法,但我不确定哪种是正确的hadoop方式: 从我的第一轮reducer中输出一个包含用户列表的副文件,在第二轮中读取

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

作为第一轮reduce的一部分,我可以通过在流上迭代一次来确定谁从未激活

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

  • 从我的第一轮reducer中输出一个包含用户列表的副文件,在第二轮中读取它--我如何避免将整个文件读入内存,如何处理来自多个前端reducer的多个副文件(是否有一种排序/组合副文件的好方法)
  • 在我的reducer中的内存中缓冲一个用户的所有事件,这样我就可以在将它们输出到磁盘之前用“not activated”标记它们——感觉有点恶心
这是一条“正确的道路”吗?我是否还错过了另一条道路


我正在使用AWS弹性MapReduce。

使用MapReduce很容易

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

e、 G:

Reducer:基本上每个事件都有每个用户。 在这种情况下,情况如下:

USER_NEVER_ACTIVATED_APP : x,y
USER_PAID_FOR_APP : x

这样,您甚至不需要第二个制图员或工作。

对不起,我不确定这是否回答了我的问题。我知道如何确定哪些用户被激活。我想要的是将这些信息“加入”到用户的事件流中,这样,当我查看来自用户的第一个事件时,我就拥有了后来他们无法激活的上下文。这是连接部分,而不是生成部分,我可以在上面使用指针。所以把它们放在RAM中,放在磁盘上,使用HBase或其他数据库。
USER_NEVER_ACTIVATED_APP : x,y
USER_PAID_FOR_APP : x