pyspark - получить первый элемент rdd - top (1) против first () - PullRequest
0 голосов
/ 16 января 2020

Мне нужно извлечь элемент, который удовлетворяет условию 1. из моего rdd:

[((4, 2), (6, 3), (2, 1)),
((-3, 4), (2, 1)),
((4, 2), (-3, 4)),
((2, 1), (-3, 4)),
((6, 3), (-3, 4)),
((2, 1), (6, 3), (4, 2)),
((-3, 4), (4, 2)),
((4, 2), (2, 1), (6, 3)),
((-3, 4), (6, 3))]

Результат должен соответствовать

[((2,1),(6,3),(4,2))]

Я думал, что могу использовать rdd.top (1) или rdd.first (),

в качестве верхней (n) сортировки и последующего извлечения. Я не доберусь до нужного элемента с ним.

rdd.first () дает мне. ..

[(4, 2), (6, 3), (2, 1)]

(А. Можете ли вы объяснить причину различных результатов?) Решено.

B. Вы можете помочь мне получить нужный результат? Это должен быть rdd, порядок не имеет значения. Тем не менее, скобки / структура делают.

1 Ответ

0 голосов
/ 16 января 2020

Насколько я понял - вам просто нужен первый элемент из RDD.

Это может быть достигнуто с помощью RDD.take(1) - Но это вернет list, а не RDD.

RDD.take(1)
# [((2, 1), (4, 2), (6, 3))]

Однако, если вы хотите, чтобы первый элемент был RDD, вы можете parallelize it

frst_element_rdd = spark.sparkContext.parallelize(RDD.take(1))

Я не видел ничего другого, что делает это , Итак, дайте мне знать, если у кого-то есть что-то лучше.

...