rdd = sc.textFile(myDataset)
правильно.
list_ = rdd.map(lambda line: line.split(",")).map(lambda e : e[1]).distinct().collect()
new_ = list_.sortBy(lambda e : e[2]) # e[2] does not exist.
Вы уже вызвали сбор на list_
, поэтому он больше не является СДР. Затем вы перешли на sortBy
, так что он не будет работать. Возможно, вы сделали эту ошибку при публикации. Основной вопрос - операция с картой. Вам нужно создать pairWiseRdd , но вы не создали его. Следовательно, нет e[2]
для сортировки. См. Ниже.
>>> rdd.map(lambda line: line.split(",")).map(lambda e : e[1]).collect()
[' Alpha', ' Beta', ' Gamma', ' Alpha', ' Alpha']
Выше не будет иметь значение, которое вам нужно использовать distinct()
Вместо этого вам нужно сделать это
>>> list_ = rdd.map(lambda line: line.split(",")).map(lambda e : (e[1],e[3]))
>>> list_.collect()
[(' Alpha', ' 4'),
(' Beta', ' 3'),
(' Gamma', ' 8'),
(' Alpha', ' 4'),
(' Alpha', ' 4')]
>>> distinct_rdd = list_.distinct() #making stuff distinct
>>> distinct_rdd.collect()
[(' Alpha', ' 4'), (' Beta', ' 3'), (' Gamma', ' 8')]
Теперь, когда мы сделали нашу pairWiseRddмы можем использовать второе значение каждой пары, чтобы отсортировать его.
>>> sorted_rdd = distinct_rdd.sortBy( lambda x:x[1] )
>>> sorted_rdd.collect()
[(' Beta', ' 3'), (' Alpha', ' 4'), (' Gamma', ' 8')]