我是Spark noobie,我正在尝试在Spark上测试一些东西,看看是否有任何性能提升我正在使用的数据大小。
我的rdd中的每个对象都包含时间,ID和位置。
我想比较具有相同ID的相同时间组的位置。所以,我首先运行以下内容以按ID
分组grouped_rdd = rdd.map(lambda x: (x.id, [x])).groupByKey()
然后我想把它分解成每个对象的时间。
有什么建议吗?谢谢!
答案 0 :(得分:0)
首先,如果你想要id
和time
作为关键,只需将它们放入关键部分,而不是按ID分组,然后分别按时间分组。
m = sc.parallelize([(1,2,3),(1,2,4),(2,3,5)])
n = m.map(lambda x: ((x[0], x[1]), x[2]))
其次,Avoid GroupByKey表现不佳并尽可能使用combineByKey
或reduceByKey
。