Я пытаюсь написать сценарий Python для чтения CSV-файла с помощью Mapreducer, и я получаю сообщение об ошибке ValueError: слишком много значений для распаковки (ожидается 2) - PullRequest
1 голос
/ 09 апреля 2019

0

Я использую следующий код Python в MapReduce:

from mrjob.job import MRJob
from mrjob.step import MRStep


class productRevenue(MRJob):
    #each input lines consists of product, productCategory, price, and paymentMode
    def mapper_get_product(self, _, line):
        # create a key-value pair with key: product and value: price
        line_cols = line.split(',')
        yield line_cols[1], float(line_cols[2])

    def combiner_count_product(self, product, counts):
        # consolidates all key-value pairs of mapper function (performed at mapper nodes)
        yield product, sum(counts)

    def reducer_count_product(self, product, counts):
        # final consolidation of key-value pairs at reducer nodes
        yield None, '${:,.2f}'.format(sum(counts), product)

    def reducer_find_max(self, _, product_count_pairs):
        yield max(product_count_pairs)

    def steps(self):
        return [
            MRStep(mapper=self.mapper_get_product,
                   combiner=self.combiner_count_product,
                   reducer=self.reducer_count_product),
            MRStep(reducer=self.reducer_find_max)
        ]       

if __name__ == '__main__':
    productRevenue.run()

Я получаю ошибку: ValueError: слишком много значений для распаковки (ожидается 2), но я не могу 'не понимаю, почему.Какие-либо предложения?Код строки cmd, который я запускаю: python test.py data.csv. CSV можно скачать здесь https://users.cs.fiu.edu/~prabakar/database/4722sp19/abarr054-3495916/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...