Come ottenere l'elenco di amici in comune tra una qualsiasi coppia di amici in rete che utilizzano pyspark

0

Domanda

Ho tre dischi come questo [('a1', ['b1', 'c1', 'd1', 'e1']), ('a2', ['b1', 'c2', 'd2', 'e1']),('a3', ['b1', 'c2', 'd1', 'e2'])] contenente l'id chiave come l'elenco dei valori per ogni tasto.

  1. Voglio ottenere il numero totale di valori nell'elenco per ogni chiave in pyspark.
  2. Come posso ottenere la lista degli amici in comune tra una qualsiasi coppia di demoni in pyspark.
key-value pyspark
2021-11-24 00:54:04
1

Migliore risposta

0

1 utilizzare Semplicemente l' size funzione.

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

2 Utilizzare il array_intersect funzione per ottenere il punto di intersezione degli allineamenti.

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

In altre lingue

Questa pagina è in altre lingue

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