java - 使用 Mapreduce for Java Appengine 计算唯一用户数

标签 java google-app-engine parallel-processing mapreduce

我正在尝试计算我的 Java AppEngine 应用程序每天的唯一用户数。我决定使用 mapreduce 框架 (mapreduce.appspot.com) for java appengine 来离线进行计算。我设法创建了一个 map 缩减作业,该作业遍历代表单个用户 session 事件的所有实体。我也可以使用一个简单的计数器。不过我有几个问题:

1) 如何为每个用户 ID 只增加一次计数器?我目前正在映射包含用户 ID 属性的实体,但其中许多实体可能包含相同的用户 ID,那么我如何只计算一次?

2) 一旦我将作业的这些结果存储在这些计数器中——我如何才能将它们持久保存到数据存储中?我在 mapreduce 的状态页面上看到了计数器的结果,但我希望这些结果自动保存到数据存储中。

想法?

最佳答案

我还没有真正使用过 MapReduce 功能,但我的理论理解是您可以从映射器中将内容写入数据存储。您可以创建一个名为 UniqueCount 之类的实体类型,并在您的映射器每次看到以前从未见过的 ID 时插入一个实体。然后您可以计算您拥有多少个唯一 ID。事实上,您可以在每次找到新的唯一实体时更新一个计数器。您可能需要在 google 上搜索“分片计数器”以获取有关在数据存储中创建可处理高吞吐量的计数器的提示。

最终,当他们完成 Reduce 功能时,我想这整个任务将变得非常微不足道。

关于java - 使用 Mapreduce for Java Appengine 计算唯一用户数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3129430/

相关文章:

java - 如何在 OpenNLP 中使用自定义分割字符扩展 SentenceDetector?

google-app-engine - 在 Go 中的 GAE 的 memcache 中存储一个对象

c++ - tbb:task_scheduler_init 自定义分配器?

java - 在 Android SQLite 中处理 "complex"数据库

java - WriteInt-RandomAccessFile - java

java - 为什么我无法像这样调用网络服务?

python - 如何将 AppEnginePlatformWarning 记录为警告而不是错误

google-app-engine - 您可以在 GAE Flexible Environment 中使用部分 vCPU 吗?

r - R (windows) 中大栅格的并行处理

opencv - 在openCV中的多个程序中打开相机