PySpark – metoda sortByKey() pentru a returna valorile din perechile k,v în ordinea lor originală (Programare, Python, Sortare, Apache Spark, Rdd, Pyspark)

lagunazul a intrebat.

Am nevoie să pot returna o listă de valori din perechi (cheie,valoare) dintr-un RDD păstrând ordinea originală.

Am inclus soluția mea de rezolvare mai jos, dar aș dori să pot face totul dintr-o singură dată.

Ceva de genul:

myRDD = [(1, 2582), (3, 3222), (4, 4190), (5, 2502), (6, 2537)]
values = myRDD.<insert PySpark method(s)>
print values
>>>[2582, 3222, 4190, 2502, 2537]

Soluția mea:

myRDD = [(1, 2582), (3, 3222), (4, 4190), (5, 2502), (6, 2537)]

values = []
for item in myRDD.sortByKey(True).collect():
                 newlist.append(item[1])
print values
>>>[2582, 3222, 4190, 2502, 2537]

Mulțumesc!

1 răspunsuri
zero323

Dacă prin „ordinea originală” te referi la ordinea cheilor, atunci tot ce trebuie să faci este să adaugi map după sortare:

myRDD.sortByKey(ascending=True).map(lambda (k, v): v).collect()

sau să apelați values metoda:

myRDD.sortByKey(ascending=True).values().collect()

Dacă vă referiți la ordinea valorilor dintr-o structură care a fost folosită pentru a crea RDD-ul inițial, atunci este imposibil fără a povesti informații suplimentare. RDD-urile nu sunt ordonate, cu excepția cazului în care aplicați în mod explicit transformări precum sortBy.

Comentarii

  • Mulțumesc, ambele au funcționat! Am ales metoda l values. –  > Por lagunazul.