使用PySpark优化行合并

时间:2018-06-21 22:40:28

标签: python pyspark rdd

我正在使用Pyspark来实现regresion KNN算法,并且在使用RDD优化这部分代码时遇到了麻烦:

def x(rddInput, d):
 rddList = []
 rddInput = rddInput.zipWithIndex().map(lambda (x,y) : (y,x))
 rddList.append(rddInput)
 for index in range(1,d):
  rddList.append(groupMapping(rddInput,index,d))
 return spark.sparkContext.union(rddList).groupByKey().filter(lambda (x,y):len(y) == d).mapValues(list) 

这个想法是,根据D的值,我必须将RDD分组为D行,例如:

_____D=2___________ D=3_________

|ROW10 ROW9|  |ROW10 ROW9 ROW8|

|ROW9 ROW8 |  |ROW9  ROW8 ROW7|


|ROW8 ROW7 |  |ROW8  ROW7 ROW6|

|..........|  |...............|

|ROW2 ROW1 |  |ROW3  ROW2 ROW1|

该解决方案实际上可以工作,但是我必须对D个RDD副本进行合并,而这会占用过多的内存。是否有任何优化的解决方案可以在PySpark中使用RDD将内存成本较低的行分组?

0 个答案:

没有答案