распаковка на молнии с лампдой в spark python 3.5 - PullRequest
0 голосов
/ 21 октября 2018

проблема в том, что этот код прекрасно работает с python 2.xn. Новый python 3.5 в Apache позволяет найти способ обойти эту проблему и выполнить конкатенацию кортежей.код.

 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)в) г) как это сделать

1 Ответ

0 голосов
/ 21 октября 2018

Вы можете заменить:

.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]])
...