作为我们启动产品的一部分,我们需要计算“相似用户特征”。我们决定和猪一起去。我已经学习猪几天了,了解它是如何工作的。所以从这里开始是日志文件的样子。
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 的用户。
该算法可以拆分如下:
- 查找所有访问过一些常用 url 的用户。
- 为访问的每个资源生成所有用户的成对组合。
- 对于每一对 and 和 url,计算这些用户的相似度:相似度取决于访问之间的时间间隔(因此我们需要跟踪时间)。
- 总结每个pair-url的相似性。
这是我到目前为止所写的:
A = LOAD 'logs.txt' USING PigStorage('\t') AS (uid:bytearray, url:bytearray, time:long);
grouped_pos = GROUP A BY ($1);
我知道这还不算多,但现在我不知道如何生成对或进一步移动。所以任何帮助将不胜感激。
谢谢。