Python mrjob在本地运行但缺少大量数据

时间:2017-11-19 00:09:40

标签: python mapreduce missing-data mrjob

我可以在本地运行python mrjob,速度要快得多。但是当我查看输出结果时,它丢失了数据,并丢失了大量数据。我想知道这是否是因为我的代码中有一个函数需要更长的运行时间,因此结果之后的所有数据都没有出现在输出中。

这是我的模型代码(无法显示真实代码)和我的描述:

def core_logic(all_records):
    my_dct = {}
    for name, single_record in all_records.items():
        for i in range(410):
            if i < 10:
                my_dct[name]['color'].append('')
                my_dct[name]['flavor'].append('')
                my_dct[name]['quality'].append('')
            else:
                frozen_ratio = 0.7
                if frozen_ratio < 0.5:
                    my_dct[name]['color'].append('')
                    my_dct[name]['flavor'].append('')
                    my_dct[name]['quality'].append('Not Frozen')
                else:
                    food_score = a_complex_function(single_record[name])  # Problem started here

我有一个包含map reduce作业的python文件,它会在reducer中调用这个core_logic函数。 检查输出后,我发现,所有food_score都丢失了,为了得到这个分数,我不得不从另一个文件中调用a_complex_function。这是一个非常复杂的功能,需要时间才能运行。

此核心逻辑all_records的数据输入是字典。

现在我强烈怀疑这是否是因为当代码并行运行时,在map reduce中,如果某些方法需要时间运行,数据将不会被记录?但我尝试在time.sleep(2000)之后添加a_complex_function(),但数据仍然缺失。此功能通常需要不到2秒的时间才能完成。 我还试图在每个步骤中打印出数据,之前的所有步骤都很好,但就在a_complex_function()之后,数据丢失了

我在自己的笔记本电脑上运行mapreduce。通过命令行python map_reduce_job.py < test_data/test_file.csv > outfile.new

你遇到过这种类型的问题吗?有没有解决方案?

0 个答案:

没有答案