Comment obtenir la liste des amis en commun entre toute paire d'amis dans le réseau à l'aide de pyspark

0

La question

J'ai trois dossiers comme ceci [('a1', ['b1', 'c1', 'd1', 'e1']), ('a2', ['b1', 'c2', 'd2', 'e1']),('a3', ['b1', 'c2', 'd1', 'e2'])] contenant l'id de la clé en tant que liste de valeurs pour chaque clé.

  1. Je veux obtenir le nombre total de valeurs dans la liste pour chaque clé dans pyspark.
  2. Comment je peux obtenir la liste des amis en commun entre toute paire de démons dans pyspark.
key-value pyspark
2021-11-24 00:54:04
1

La meilleure réponse

0

1 utilisez Simplement l' size fonction.

df = df.withColumn('num_friends', F.expr('size(friends)'))

2 Utilisez l' array_intersect fonction permettant d'obtenir l'intersection de tableaux.

cp_df = df.toDF('key_pair', 'friends_pair')
cross_df = df.crossJoin(cp_df).filter('key!=key_pair')
cross_df = cross_df.select(F.create_map('key', 'key_pair').alias('key_pair'),
                           F.array_intersect('friends', 'friends_pair').alias('common_friends'))
cross_df.show(truncate=False)
2021-11-24 02:39:00

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................