【发布时间】:2015-02-27 07:01:55
【问题描述】:
假设我有一排电话记录格式:
[CallingUser, ReceivingUser, Duration]
如果我想知道给定用户打电话的总时间(用户是呼叫用户或接收用户的持续时间总和)。
实际上,对于给定的记录,我想创建 2 对 (CallingUser, Duration) 和 (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)
【问题讨论】:
标签: apache-spark pyspark