Ошибка неожиданных аргументов, появляющаяся в командной строке при запуске задания mapreduce (MRjob) с использованием python

Я новичок. Я пытаюсь запустить простой map-reduce работа с использованием python 3.8 с участием csv на местном Hadoop cluster (Hadoop версия 3.2.1). Я сейчас использую Windows 10 (64-bit). Цель того, что я пытаюсь сделать, - обработать файл csv, в котором я получу результат подсчета, представляющего 10 лучших зарплат из файла, но это не работает.

Когда я ввожу эту команду:

$ python test2.py hdfs:///sample/salary.csv -r hadoop --hadoop-streaming-jar %HADOOP_HOME%/share/hadoop/tools/lib/hadoop-streaming-3.2.1.jar

Вывод сообщает об ошибке:

No configs found; falling back on auto-configuration
    No configs specified for hadoop runner
    Looking for hadoop binary in C:\hdp\hadoop\hadoop-dist\target\hadoop-3.2.1\bin...
    Found hadoop binary: C:\hdp\hadoop\hadoop-dist\target\hadoop-3.2.1\bin\hadoop.CMD
    Using Hadoop version 3.2.1
    Creating temp directory C:\Users\Name\AppData\Local\Temp\test2.Name.20200813.003240.345552
    uploading working dir files to hdfs:///user/Name/tmp/mrjob/test2.Name.20200813.003240.345552/files/wd...
    Copying other local files to hdfs:///user/Name/tmp/mrjob/test2.Name.20200813.003240.345552/files/
    Running step 1 of 1...
      Found 2 unexpected arguments on the command line [hdfs:///user/Name/tmp/mrjob/test2.Name.20200813.003240.345552/files/wd/setup-wrapper.sh#setup-wrapper.sh, hdfs:///user/Name/tmp/mrjob/test2.Name.20200813.003240.345552/files/wd/test2.py#test2.py]
      Try -help for more information
      Streaming Command Failed!
    Attempting to fetch counters from logs...
    Can't fetch history log; missing job ID
    No counters found
    Scanning logs for probable cause of failure...
    Can't fetch history log; missing job ID
    Can't fetch task logs; missing application ID
    Step 1 of 1 failed: Command '['C:\\hdp\\hadoop\\hadoop-dist\\target\\hadoop-3.2.1\\bin\\hadoop.CMD', 'jar', 'C:\\hdp\\hadoop\\hadoop-dist\\target\\hadoop-3.2.1/share/hadoop/tools/lib/hadoop-streaming-3.2.1.jar', '-files', 'hdfs:///user/Name/tmp/mrjob/test2.Name.20200813.003240.345552/files/wd/mrjob.zip#mrjob.zip,hdfs:///user/Name/tmp/mrjob/test2.Name.20200813.003240.345552/files/wd/setup-wrapper.sh#setup-wrapper.sh,hdfs:///user/Name/tmp/mrjob/test2.Name.20200813.003240.345552/files/wd/test2.py#test2.py', '-input', 'hdfs:///sample/salary.csv', '-output', 'hdfs:///user/Name/tmp/mrjob/test2.Name.20200813.003240.345552/output', '-mapper', '/bin/sh -ex setup-wrapper.sh python3 test2.py --step-num=0 --mapper', '-combiner', '/bin/sh -ex setup-wrapper.sh python3 test2.py --step-num=0 --combiner', '-reducer', '/bin/sh -ex setup-wrapper.sh python3 test2.py --step-num=0 --reducer']' returned non-zero exit status 1.

Вот ошибка, которую я точно получил из вывода выше:

 Found 2 unexpected arguments on the command line [hdfs:///user/Name/tmp/mrjob/test2.Name.20200813.003240.345552/files/wd/setup-wrapper.sh#setup-wrapper.sh, hdfs:///user/Name/tmp/mrjob/test2.Name.20200813.003240.345552/files/wd/test2.py#test2.py]

Это файл Python test2.py

from mrjob.job import MRJob
    from mrjob.step import MRStep
    import csv
    
    cols = 'Name,JobTitle,AgencyID,Agency,HireDate,AnnualSalary,GrossPay'.split(',')
    
    class salarymax(MRJob):
    
        def mapper(self, _, line):
            # Convert each line into a dictionary
            row = dict(zip(cols, [a.strip() for a in csv.reader([line]).next()]))
    
            # Yield the salary
            yield 'salary', (float(row['AnnualSalary'][1:]), line)
    
            # Yield the gross pay
            try:
                yield 'gross', (float(row['GrossPay'][1:]), line)
            except ValueError:
                self.increment_counter('warn', 'missing gross', 1)
    
        def reducer(self, key, values):
            topten = []
    
            # For 'salary' and 'gross' compute the top 10
            for p in values:
                topten.append(p)
                topten.sort()
                topten = topten[-10:]
    
            for p in topten:
                yield key, p
    
        combiner = reducer
    
    
    if __name__ == '__main__':
        salarymax.run()

Я просмотрел файл setup-wrapper.sh, потому что именно в нем выделялась ошибка. Когда я проверил, мне показалось, что все в порядке.

Не понимаю, в чем ошибка. Есть способ исправить?


Ответы (0 шт):