[英]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.