簡體   English   中英

如何使用共享源RDD中的密鑰的元素創建對RDD?

[英]How to create pair RDD with elements that share keys in source RDD?

我在pyspark中有一個鍵值RDD,並想返回在源RDD中具有相同鍵的對的RDD。

#input rdd of id and user
rdd1 = sc.parallelize([(1, "user1"), (1, "user2"), (2, "user1"), (2, "user3"), (3,"user2"), (3,"user4"), (3,"user1")])

#desired output
[("user1","user2"),("user1","user3"),("user1","user4"),("user2","user4")]

到目前為止,我還無法提出正確的功能組合來實現此目的。 這樣做的目的是基於共享的公用密鑰創建用戶的邊緣列表。

據我了解您的描述,這樣的方法應該起作用:

output = (rdd1
   .groupByKey()
   .mapValues(set)
   .flatMap(lambda kvs: [(x, y) for x in kvs[1] for y in kvs[1] if x < y])
   .distinct())

不幸的是,這是相當昂貴的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM