次の形式の通話レコードの行があるとします。
[CallingUser, ReceivingUser, Duration]
特定のユーザーが電話に出ていた合計時間 (ユーザーが CallingUser または RecomingUser であった期間の合計) を知りたい場合。
(CallingUser, Duration)
事実上、特定のレコードに対して、2 つのペアとを作成したいと考えています(ReceivingUser, Duration)
。
これを行う最も効率的な方法は何ですか? 2つを追加できRDDs
ますが、これが良いアプローチであるかどうかは不明です:
#Sample Data:
callData = sc.parallelize([["User1", "User2", 2], ["User1", "User3", 4], ["User2", "User1", 8] ])
calls = callData.map(lambda record: (record[0], record[2]))
#The potentially inefficient map in question:
calls += callData.map(lambda record: (record[1], record[2]))
reduce = calls.reduceByKey(lambda a, b: a + b)