ค่าคีย์สูงสุดในการดำเนินการตาม rdd ใน pyspark

ฉันยังใหม่ต่อการดำเนินการตาม rdd ฉันกำลังพยายามทำความเข้าใจคีย์-ค่าสูงสุด ฉันมี rdd เช่นนี้:

RDD = sc.parallelize([("A", 2, 1), ("C", 8, 5), ("B", 3, 4), ("A", 7, 5), ("C", 5, 8), ("C", 6, 10), ("B", 10, 6)])

ฉันต้องหาองค์ประกอบที่ 2 สูงสุดตามคีย์ ฉันต้องการเห็นผลลัพธ์เช่นนี้

("A", 7, 5)
("B", 10, 6)
("C", 6, 10)

ฉันพยายามแล้ว newrdd = RDD.reduceByKey(lambda x: max(x[2])) มันแสดงข้อผิดพลาดบางอย่าง


person Mass17    schedule 16.11.2019    source แหล่งที่มา


คำตอบ (1)


ไม่ว่าในกรณีใดก็ตาม หากมีใครต้องการ ฉันจะได้ rdd ที่จับคู่ไว้ก่อน

pairedrdd = RDD.map(lambda x: (x[0], x[2]))

แล้ว newrdd = pairedrdd.reduceByKey(lambda x, y: max(x,y))

lis = newrdd.collect()

for i in lis:
    print(i)
person Mass17    schedule 16.11.2019