2016-05-01 3 views
-1

Я работаю WTH кортежей Python и есть текстовый файл, который выглядит какMapReduce Сортировать по Python кортежей Численно

(1,value1) 
(2,value2) 
(3,value3) 
... 
(100,value100) 

Как я могу настроить свою работу MapReduce для сортировки по первому ключу в кортеже как целое ?

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

Я бег моего Hadoop задания из баша со следующими параметрами:

hadoop jar /usr/local/Cellar/hadoop/2.*/libexec/share/hadoop/tools/lib/hadoop-streaming-2*.jar 
-D mapreduce.job.output.key.comparator.class=org.apache.hadoop.mapred.lib.KeyFieldBasedComparator 
-D mapreduce.partition.keycomparator.options=-n 
-reducer reducer.py 
-input tuples.txt 
-output sortedtuples 

Благодарность

+0

Вы можете запускать задания по уменьшению размера карты в миллионах способов в python. Как вы управляете своим? Это пи-искра? – gnicholas

+0

добавлено больше информации. просмотреть отредактированный вопрос – Jack

ответ

1

Если ваши значениями являются целыми числами, вы можете использовать функцию eval, чтобы избежать удаления/конвертирования задач. Ниже приведен рабочий пример того, что вы хотите:

f = open('sourceFile.txt') 
L = f.readlines() 
f.close() 
MyList = sorted(map(eval,L) , key=lambda x: x[0]) 
Смежные вопросы