RDD: сохранить общий порядок при перераспределении - PullRequest
0 голосов
/ 02 июля 2018

Кажется, одно из моих предположений было неверным в отношении порядка в СДР ( относящегося ).

Предположим, я хочу перераспределить СДР после сортировки.

import random

l = list(range(20))
random.shuffle(l)

spark.sparkContext\
.parallelize(l)\
.sortBy(lambda x:x)\
.repartition(3)\
.collect()

Что дает:

[16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

Как мы видим, порядок сохраняется в пределах раздела, но общий порядок сохраняется не для всех разделов.

Я бы хотел сохранить общий порядок СДР, например:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

Мне трудно найти в Интернете что-нибудь, что могло бы помочь. Помощь будет оценена.

1 Ответ

0 голосов
/ 03 июля 2018

Похоже, что мы можем предоставить аргумент numPartitions=partitions функции sortBy для разделения СДР и сохранения общего порядка:

import random

l = list(range(20))
random.shuffle(l)

partitions = 3

spark.sparkContext\
.parallelize(l)\
.sortBy(lambda x:x ,numPartitions=partitions)\
.collect() 
...