Список (или итератор) кортежей, возвращаемых MAP (PySpark)

У меня есть метод картографирования:

def mapper(value):
    ...
    for key, value in some_list:
        yield key, value

то, что мне нужно, не очень далеко от обычного примера WordCount, на самом деле. У меня уже есть рабочий скрипт, но только если метод mapper выглядит так:

def mapper(value):
    ...
    return key, value

Вот как выглядит его вызов:

sc.textFile(sys.argv[2], 1).map(mapper).reduceByKey(reducer).collect()

Я потратил 2 часа, пытаясь написать код, который бы поддерживал генераторы в mapper. Но не мог этого сделать. Я даже согласен просто вернуть список:

def mapper(value):
    ...
    result_list = []
    for key, value in some_list:
        result_list.append( key, value )
    return result_list

Вот:https://groups.google.com/forum/#!searchin/spark-users/flatmap$ 20multiple / spark-users / 1WqVhRBaJsU / -D5QRbenlUgJ Я обнаружил, что должен использовать flatMap, но это не сработало - мой редуктор начал получать входные данные, такие как (key1, value1, key2, value2, value3, ... ) - но это должно быть [(ключ1, значение1), (ключ2, значение2, значение3) ...]. Другими словами, редуктор начал собирать только отдельные части и не знает, является ли это значением или ключом, а если значением - к какому ключу он принадлежит.

Итак, как использовать мапперы, которые возвращают итераторы или списки?

Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос