在 spark python 3.5 中使用 lambda 解压缩

zip unpacking with lampda in spark python 3.5

此代码与 python 2.x n Apache spark 中的新 python 3.5 一起工作时的问题如何找到解决此问题的方法执行元组连接。 代码。

 from pyspark.mllib.stat import Statistics
    import random
    column1 = sc.parallelize(range(100))
    column2 = sc.parallelize(range(100,200))
    column3 = sc.parallelize(list(reversed(range(100))))
    column4 = sc.parallelize(random.sample(range(100),100))
    data = column1.zip(column2).zip(column3).zip(column4).map(lambda (((a,b),c),d) : (a,b,c,d) ).map(lambda (a,b,c,d) : [a,b,c,d])
    print(Statistics.corr(data))

错误

 File "<ipython-input-19-e505a170fcab>", line 7
    data = column1.zip(column2).zip(column3).zip(column4).map(lambda (((a,b),c),d) : (a,b,c,d) ).map(lambda (a,b,c,d) : [a,b,c,d])
                                                                     ^
SyntaxError: invalid syntax

通常只有两部分的作品

rdd.map(lambda x_y: (x_y[1],  x_y[0]) 

但是像这样的元组 (((a,b),c),d) 怎么做

您可以替换:

.map(lambda (((a,b),c),d) : (a,b,c,d) ) \ 
.map(lambda (a,b,c,d) : [a,b,c,d])

.map(lambda x (((a,b),c),d) : [x[0][0][0],x[0][0][1], x[0][1], x[1]])