0

我陷入了开始这个java作业的困境。任何帮助,将不胜感激。我有两个文本文件:

1) 用户日志 (2MB)

UserID  Activity        TimeStamp
asdf    login       1279246015000
asdf    login       1280264668000
aaa     login       1280265253000
aaa     purchase    1279121883000
abc     login   1279122061000

2) 用户资料

UserID     Website
asdf       aaa.com
aaa        abc.com
abc        aaa.com

我需要输出以下信息:

Number of logins     Total users aaa.com    abc.com
1                    xxx                    xxx
2
3
4
etc...

预期的输出是这样的:“登录次数”是在日志文件中执行的登录计数,按活动分组。所以第一行应该显示从aaa.com网站,abc.com网站等只登录一次的用户总数,按网站划分。第二行表示来自aaa.com、abc.com等的已经登录过两次的用户总数;等等。

需要对用户日志和用户配置文件文本文件进行重复数据删除。

4

2 回答 2

0

您可能想使用 Hadoop(不过,这可能有点矫枉过正——但值得知道这一点)

特别是,这个例子展示了如何计算大文件中的单词。您将需要调整减少阶段并在其中包含网站。

于 2012-10-27T18:30:36.193 回答
0

对于一个 2Mb 的日志文件,一个读取文件的简单程序和计数元素将在几秒钟内运行(可能更少)。


使用应该使用 Maps(java 字典):

  • UserProfiles 的映射:键 = 用户 ID,值 = 站点
  • 一个按站点统计登录的Map,这个Map的key是站点,value = count。

每次读取一行日志时,您都会从 userprofiles 映射中获取用户 ID 的站点,并且您会在 countLogins 映射中增加该站点的站点的登录计数。

于 2012-10-28T10:54:28.230 回答