Python 在这个MapReduce问题中,如何有选择地选择大于3的值之和?

Python 在这个MapReduce问题中,如何有选择地选择大于3的值之和?,python,hadoop,mapreduce,hdfs,Python,Hadoop,Mapreduce,Hdfs,我从.edges文件(Facebook社交节点)获取数据。这些文件中的每一行表示图形中的一条边。比如说, 12395 表示从节点123到节点95有一条边。对于每个节点X,我感兴趣的是来自偶数节点的传入边的数量。但我只对节点X感兴趣,它至少有3条来自偶数节点的传入边 我的问题是,我已经尝试了不同的for循环,并且正在努力在我的结果中导出sum(valuelist)值,其中sum(valuelist)仅大于或等于3 从mrjob.job导入mrjob 类字数(MRJob): def映射器(自身、键、

我从.edges文件(Facebook社交节点)获取数据。这些文件中的每一行表示图形中的一条边。比如说,

12395

表示从节点123到节点95有一条边。对于每个节点X,我感兴趣的是来自偶数节点的传入边的数量。但我只对节点X感兴趣,它至少有3条来自偶数节点的传入边

我的问题是,我已经尝试了不同的for循环,并且正在努力在我的结果中导出sum(valuelist)值,其中sum(valuelist)仅大于或等于3

从mrjob.job导入mrjob
类字数(MRJob):
def映射器(自身、键、行):
def偶数_编号(钥匙):
如果浮动(键)%2==0:
返回真值
其他:
返回错误
split_word=line.split()
如果偶数(拆分字[0]):
收益率(拆分字[1],1)
def减速器(自身、键、值列表):
收益键,总和(值列表)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
WordCount.run()
如果输入为:

22  7
32  7
33  7
34  7
7   6
2   6
8   6
那么输出将是

7       3
因为节点7有3条来自偶数节点的传入边。节点6只有2条这样的传入边,并且由于2<3,它不会进入输出。在输出文件中,关键点应为节点编号,值应为其从偶数节点传入的边数

这是我现在在结果中得到的输出

"979"   4
"98"    21
"980"   53
"981"   24
"982"   36
"983"   29
"984"   21
"985"   4
"986"   4
"987"   2
"988"   16
"989"   14
"99"    3
"990"   22
"991"   7
"992"   13
"993"   65
"994"   10
"995"   27
"996"   0
"997"   43
"998"   4
"999"   35

请注意,第二列->总和(值列表)->中的一些值小于3。。这不是我想要的预期输出。

您需要在reducer中过滤掉结果

def reducer(self, key, valuelist):
    count = sum(valuelist)
    if count >= 3:
        yield key, count