Найти пересечение между любой парой кортежей в списке в pyspark - PullRequest
0 голосов
/ 01 марта 2020

У меня есть список кортежей, и я хочу найти общие элементы между любой парой значений кортежей в списке с помощью функции pyspark.

Например, это мой ввод:

a = [('key1',('b','c','f')),('key2',('e','c')),('key3',('e','f','n')),('key4',('b','g','h')),('key5',('f','h')),('key6',('e','f','k'))]

Это желаемый результат. Каждый элемент списка «result» - это пересечение, полученное путем сравнения каждого значения кортежей в списке «a»:

result = ['c', 'f', 'b', 'f', 'c', 'e', 'c', 'e', 'f', 'e', 'h']

Это мое решение в pyspark, но оно возвращает ошибку:

a1 = a.map(lambda x:x[1]) #keep only values from the list of tuples
a_pair = a1.cartesian(a1).filter(lambda x: x[0]!=x[1]) #it returns all possible combinations between values (max length 2) without repetitions
a_intersection = a_pair.map(lambda x: set(x[0]) & set(x[1])).collect() #it should return intersection between each pairs in a_pair
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...