我有三个这样的记录
[('a1', ['b1', 'c1', 'd1', 'e1']), ('a2', ['b1', 'c2', 'd2', 'e1']),('a3', ['b1', 'c2', 'd1', 'e2'])]
含有id键作为清单的价值为每一个关键。
- 我想要得到总数值的列表中的每个关键在pyspark.
- 我如何可以获得该名单的共同的朋友之间的任何对恶魔在pyspark.
我有三个这样的记录
[('a1', ['b1', 'c1', 'd1', 'e1']), ('a2', ['b1', 'c2', 'd2', 'e1']),('a3', ['b1', 'c2', 'd1', 'e2'])]
含有id键作为清单的价值为每一个关键。
1简单的使用 size
功能。
df = df.withColumn('num_friends', F.expr('size(friends)'))
2使用 array_intersect
功能得到的交叉路口的阵列。
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)