使用hadoop / pig从日志中提取类似用户

时间:2011-04-03 21:18:59

标签: hadoop apache-pig

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

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

由于用户和网址数量巨大,我们无法在此处使用强力方法,因此首先我们需要找到至少可以访问公共网址的用户。

该算法可以拆分为:

  1. 查找已访问某些常用网址的所有用户。
  2. 为每个访问的资源生成所有用户的成对组合。
  3. 为每对和url计算这些用户的相似度:相似性取决于访问之间的时间间隔(因此我们需要跟踪时间)。
  4. 总结每一对 - url的相似性。
  5. 这是我到目前为止写的:

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

    我知道它还不多,但现在我不知道如何生成这对或进一步移动。 所以任何帮助都会受到赞赏。

    感谢。

2 个答案:

答案 0 :(得分:3)

来自IBM的一个很好的,详细的paper与MapReduce共同聚类可能对你有用。

Google新闻个性化paper描述了一种相当直接的Locality Sensitive Hashing实现方案,用于解决同样的问题。

答案 1 :(得分:0)

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

使用点击时间查询建议 由乔朱梅,邓登周,肯尼斯教堂 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