나는 세 가지 레코드를 다음과 같이
[('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)