2017-01-24 5 views
1

Ich habe versucht, die beiden Rdds unterhalb von averagePoints1 und kpoints2 zusammenzuführen. Es hält werfen diesen FehlerWie kann ich zwei RDDs in PySpark zippen?

ValueError: Can not deserialize RDD with different number of items in pair: (2, 1) 

und ich versucht, viele Dinge, aber ich kann nicht die beiden RDDs identisch sind, haben die gleiche Anzahl von Partitionen. Mein nächster Schritt ist die Anwendung der euklidischen Distanzfunktion auf den beiden Listen, um den Unterschied zu messen. Wenn jemand weiß, wie er diesen Fehler lösen kann oder einen anderen Ansatz verfolgt, dem ich folgen kann, würde ich das wirklich schätzen.

Vielen Dank im Voraus

averagePoints1 = averagePoints.map(lambda x: x[1]) 
averagePoints1.collect() 
Out[15]: 
[[34.48939954847243, -118.17286894440112], 
[41.028994230117945, -120.46279399895184], 
[37.41157578999635, -121.60431843383599], 
[34.42627845075509, -113.87191272382309], 
[39.00897622397381, -122.63680410846844]] 

    kpoints2 = sc.parallelize(kpoints,4) 
    In [17]: 

    kpoints2.collect() 
    Out[17]: 
    [[34.0830381107, -117.960562808], 
    [38.8057258629, -120.990763316], 
    [38.0822414157, -121.956922473], 
    [33.4516748053, -116.592291648], 
    [38.1808762414, -122.246825578]] 

Antwort

0
newSample=newCenters.collect() #new centers as a list 
    samples=zip(newSample,sample) #sample=> old centers 
    samples1=sc.parallelize(samples) 
    totalDistance=samples1.map(lambda (x,y):distanceSquared(x[1],y)) 

für zukünftige Forscher dies die Lösung, die ich am Ende gefolgt

0
a= [[34.48939954847243, -118.17286894440112], 
[41.028994230117945, -120.46279399895184], 
[37.41157578999635, -121.60431843383599], 
[34.42627845075509, -113.87191272382309], 
[39.00897622397381, -122.63680410846844]] 
b= [[34.0830381107, -117.960562808], 
    [38.8057258629, -120.990763316], 
    [38.0822414157, -121.956922473], 
    [33.4516748053, -116.592291648], 
    [38.1808762414, -122.246825578]] 

rdda = sc.parallelize(a) 
rddb = sc.parallelize(b) 
c = rdda.zip(rddb) 
print(c.collect()) 

Check diese Antwort Combine two RDDs in pyspark

+0

kpoints2 eine Probe von einem ist RDD Durchschnittspunkte sind die Durchschnittspunkte von der RDD und ich werde ein wh schreiben ie Schleife bis zur Konvergenz, damit diese Lösung nicht hilft. Hast du bitte andere Ideen? –

Verwandte Themen