私の問題は次のとおりです。ユーザーの対話を解析しています。対話が検出されるたびに ((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)
エラーが表示されます
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])
TypeError: 'int' オブジェクトに属性 ' getitem 'がありません
私は自分のキーで何かを台無しにしていると思いますが、その理由はわかりません (ここで述べたようにキーをタプルに再キャストしようとしましたが、同じエラーが発生しました)
いくつかのアイデア?どうもありがとう