我想创建一个MapReduce程序来计算每天使用网站的唯一身份用户数。我的数据集是.csv文件,我正在提取; (date, user)
其中date是dd-MM-yyyy HH:mm
形式的字符串,user也是字符串。
我知道在scala中我会做(粗略地)沿着这些行;
val rdd = data.map(x => (x.date -> user))
val users = rdd.reduceByKey(_ + _)
获取每天的用户列表,然后我可以计算唯一身份用户。
我的问题是我需要在Hadoop中执行此操作,使用python为mapper和reducer创建文件。我对python不是很熟悉,并且无法决定如何按日期过滤用户。
以下是我对映射器的尝试:
import sys
for line in sys.stdin:
line = line.strip()
splits = line.split(",")
timestamp = splits[0]
user = splits[1]
print '%s\t%s\t%s' % (user, timestamp)
但我真的不知道如何创建减速器。任何帮助都将非常感激。
我也看到了这个问题:What's the best way to count unique visitors with Hadoop? 并且想要遵循给出的建议,但同样,我不知道如何开始创建reducer.py文件来执行此操作。