我的问题如下:我正在解析用户交互,每次检测到交互时我都会发出 ((user1,user2),((date1,0),(0,1)))。这里的零代表交互的方向。
我无法弄清楚为什么我不能使用以下 reduce 函数来减少此输出:
def myFunc2(x1,x2):
return (min(x1[0][0],x2[0][0]),max(x1[0][0],x2[0][0]),min(x1[0][1],x2[0][1]),max(x1[0][1],x2[0][1]),x1[1][0]+x2[1][0],x1[1][1]+x2[1][1])
我的映射器 (flatmap(myFunc)) 的输出是正确的:
((7401899, 5678002), ((1403185440.0, 0), (1, 0)))
((82628194, 22251869), ((0, 1403185452.0), (0, 1)))
((2162276, 98056200), ( (1403185451.0, 0), (1, 0)))
((0509420, 4827510), ((1403185449.0, 0), (1, 0)))
((7974923, 9235930), ((1403185450.0, 0), (1 , 0)))
((250259, 6876774), ((0, 1403185450.0), (0, 1)))
((642369, 6876774), ((0, 1403185450.0), (0, 1)))
((82628194 ) , 22251869), ((0, 1403185452.0), (0, 1)))
((2162276, 98056200), ((1403185451.0, 0), (1, 0)))
但是跑步
lines.flatMap(myFunc) \
.map(lambda x: (x[0], x[1])) \
.reduceByKey(myFunc2)
给我错误
返回 (min(x1[0][0],x2[0][0]),max(x1[0][0],x2[0][0]),min(x1[0][1], x2[0][1]),max(x1[0][1],x2[0][1]),x1[1][0]+x2[1][0],x1[1][1 ]+x2[1][1])
TypeError:“int”对象没有属性“ getitem ”
我想我在我的键中弄乱了一些东西,但我不知道为什么(我试图将键重铸为元组,如此处所述,但同样的错误)
一些想法?非常感谢