PySpark 关于如何组织 RDD 的建议
PySpark Suggestion on how to organize RDD
我是 Spark 新手,我正在尝试在 Spark 上测试一些东西,看看我使用的数据大小是否有任何性能提升。
我的 rdd 中的每个对象都包含一个时间、id 和位置。
我想比较包含相同id的相同时间组的位置。所以,我首先 运行 以下内容按 id
分组
grouped_rdd = rdd.map(lambda x: (x.id, [x])).groupByKey()
然后我想把它分解成每个对象的时间。
有什么建议吗?谢谢!
首先,如果你想把id
和time
都作为key,就把它们都放在key部分,而不是先按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
。
我是 Spark 新手,我正在尝试在 Spark 上测试一些东西,看看我使用的数据大小是否有任何性能提升。
我的 rdd 中的每个对象都包含一个时间、id 和位置。
我想比较包含相同id的相同时间组的位置。所以,我首先 运行 以下内容按 id
分组grouped_rdd = rdd.map(lambda x: (x.id, [x])).groupByKey()
然后我想把它分解成每个对象的时间。
有什么建议吗?谢谢!
首先,如果你想把id
和time
都作为key,就把它们都放在key部分,而不是先按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
。