Как создать функцию get_cartesian - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь выяснить код для программирования функции get_cartesian.

Вот скриншот проблемы, которую я ищу решить:

Создать функцию get_cartesian

Вот вопрос, скопированный и вставленный:

Упражнение 3: get_cartesian

Пример

Функция get_cartesian выполняет декартово произведение RDD с собой и возвращает RDD с парами точек DISTINCT.

Входные данные: СДР, содержащий заданный список точек

Вывод: СДР, содержащий декартово произведение СДР с самим собой

Пример кода

test_rdd = sc.parallelize([(1,0), (2,0), (3,0)])
get_cartesian(test_rdd).collect()
Example Output

[((1, 0), (2, 0)), ((1, 0), (3, 0)), ((2, 0), (1, 0)), ((2, 0), (3, 0)), ((3, 0), (1, 0)), ((3, 0), (2, 0))]

Я пытался с кодом, но он был неверным, и я застрял в том, как идти вперед. Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 20 мая 2019

Я не очень много знаю о Spark, но декартовый пример показывает, что элементы в кортежах не различимы, так что вы можете использовать какой-то фильтр:

def get_cartesian(rdd): 
    rdd  = rdd.cartesian(rdd).filter(lambda x: x[0] != x[1])
    return rdd

Отказ от ответственности: лямбда, используемая для filter, может быть неправильной, дайте мне знать, если все в порядке!

...