Как работать с Mapreduce путем определения ключей в Python Hadoop

У меня есть два ключевых значения из функции карты: NY и Others. Итак, вывод моего ключа: NY 1 или Other 1. Только эти два случая.

моя функция карты:

    #!/usr/bin/env python
    import sys
    import csv
    import string

    reader = csv.reader(sys.stdin, delimiter=',')
    for entry in reader:
        if len(entry) == 22:
            registration_state=entry[16]
            print('{0}\t{1}'.format(registration_state,int(1)))

Теперь мне нужно использовать редукторы для обработки выходных данных карты. Мое сокращение:

#!/usr/bin/env python
import sys
import string


currentkey = None
ny = 0
other = 0
# input comes from STDIN (stream data that goes to the program)
for line in sys.stdin:

    #Remove leading and trailing whitespace
    line = line.strip()

    #Get key/value 
    key, values = line.split('\t', 1)  
    values = int(values)
#If we are still on the same key...
    if key == 'NY':
        ny = ny + 1
    #Otherwise, if this is a new key...
    else:
        #If this is a new key and not the first key we've seen
        other = other + 1


#Compute/output result for the last key 
print('{0}\t{1}'.format('NY',ny))
print('{0}\t{1}'.format('Other',other))

Из них mapreduce выдаст два выходных файла результатов, каждый из которых содержит выходные данные NY и Others. т.е. один содержит: NY 1248, другие 4677; другой: NY 0, Others 1000. Это связано с тем, что два сокращенных разбивают вывод карты, поэтому сгенерированы два результата, путем объединения (слияния) конечный результат будет результатом.

Однако я хотел бы изменить свои функции сокращения или сопоставления, чтобы каждый сокращенный процесс работал только с одним ключом, то есть один сокращенный процесс работал только с NY в качестве значений ключа, а другой работал с другим. Я ожидаю получить такие результаты, как:

NY 1258, Others 0; Another: NY 0, Others 5677. 

Как я могу настроить свои функции для достижения ожидаемых результатов?


person HHKSHD_HH    schedule 03.03.2018    source источник
comment
Как ты это делаешь? Один редуктор уже получает только один ключ. Вот как работает mapreduce   -  person OneCricketeer    schedule 04.03.2018
comment
Примите и проголосуйте за ответ, если это помогло.   -  person Gyanendra Dwivedi    schedule 07.03.2018


Ответы (1)