2

作为我们启动产品的一部分,我们需要计算“相似用户特征”。我们决定和猪一起去。我已经学习猪几天了,了解它是如何工作的。所以从这里开始是日志文件的样子。

user        url             time
user1       http://someurl.com      1235416
user1       http://anotherlik.com       1255330
user2       http://someurl.com      1705012
user3       http://something.com        1705042
user3       http://someurl.com      1705042

由于用户和 url 的数量可能很大,我们不能在这里使用暴力破解方法,所以首先我们需要找到至少可以访问公共 url 的用户。

该算法可以拆分如下:

  1. 查找所有访问过一些常用 url 的用户。
  2. 为访问的每个资源生成所有用户的成对组合。
  3. 对于每一对 and 和 url,计算这些用户的相似度:相似度取决于访问之间的时间间隔(因此我们需要跟踪时间)。
  4. 总结每个pair-url的相似性。

这是我到目前为止所写的:

A = LOAD 'logs.txt' USING PigStorage('\t') AS (uid:bytearray, url:bytearray, time:long);
grouped_pos = GROUP A BY ($1);

我知道这还不算多,但现在我不知道如何生成对或进一步移动。所以任何帮助将不胜感激。

谢谢。

4

2 回答 2

3

IBM 提供了一篇关于使用 MapReduce 进行联合集群的不错的详细论文,可能对您有用。

Google News Personalization论文描述了一个相当简单的 Locality Sensitive Hashing 实现来解决相同的问题。

于 2011-04-19T09:02:51.693 回答
0

对于算法,请查看有关查询/URL 二分图的论文。这里有几个链接:

梅乔竹、周登勇、Kenneth Church 使用击球时间查询建议 http://www-personal.umich.edu/~qmei/pub/cikm08-sugg.ppt

点击图上的随机游走 Nick Craswell 和 Martin Szummer 2007 年 7 月 http://research.microsoft.com/apps/pubs/default.aspx?id=65235

于 2011-04-14T04:07:28.327 回答