计算每年每月提供的评级记录数



我的映射器是:

import sys
for line in sys.stdin:
# split line into the four fields
fields = line.strip().split("t")
value = fields[2] #rating
key = fields[3] #timestamp in unix seconds

print(key, value, sep="t")

我的减速机是:

import sys

(last_key , count) = (None, 0)
for line in sys.stdin:
(key, value) = line.strip().split("t")

if  (last_key  and last_key  !=key):
print(last_key, count, sep="t")
count=0

last_key  = key
count += int(value)


print(last_key, count, sep="t")  

我如何得到收视率的数量?映射器工作得很好。什么时候转换时间戳(这里是last_key)

输出应为(年-月t评级记录数)

如果你想减少(组)year-month字符串,它需要是映射器的键,而不是有第二个精度。

之后,您只需要在reducer中计算该键的值的数量。(映射器的值可以只是1,而不是实际值,如果你只需要计数额定值,那么减速机可以sum值)

我建议使用mrjob库而不是手动从sys.stdin中读取,或者您可以在PySpark中重新编写代码并在更少的行中执行相同的操作。

相关内容

  • 没有找到相关文章

最新更新