如何使用Spark在大表格中的两个用户总和两个用户的相互(倒数时间)



我有一个大桌子,如下所示:

(a,b,1)
(a,c,2)
(b,a,3)
(b,c,4)
(c,a,5)

每行代表(user1,user2,times)我想在这里做的是总结每个用户的互惠时间。这意味着,经过一系列转换后,结果应如下所示:

(a,b,4)
(a,c,7)
(b,c,4)

例如,(a,b,4)表示(a,b,1+3)。值得注意的是,最终结果中的用户付款以删除副本。

那么我该怎么做才能实现呢?非常感谢

使用leastgreatest(x,y),(y,x)进行分组(如果存在)对处理。下面显示了一种在Pyspark中进行的方法。

from pyspark.sql import functions as f
df.select(f.least(df.user1,df.user2).alias('cl'),f.greatest(df.user1,df.user2).alias('cg'),df.times) 
  .groupBy('cl','cg') 
  .agg(f.sum(times)) 
  .show(truncate = False)

相关内容

  • 没有找到相关文章

最新更新