Hadoop贴图减少了小于或大于mapper中的值

时间:2016-10-10 17:35:26

标签: hadoop dictionary reduce

#!/usr/bin/env python

import sys

# input comes from STDIN (standard input)
for line in sys.stdin:
    line = line.strip()
    words = line.split()
    fulldate = words[1]
    year = fulldate[0:4]
    print '%s\t%s' % (year, words[15])

在单词[15]中映射的值是来自第16列的txt文件的温度值(或15表示计算机计数.0-15)。 ftp://ftp.ncdc.noaa.gov/pub/data/uscrn/products/daily01/2010/CRND0103-2010-AK_St._Paul_4_NE.txt

正如您所看到的,前10-20个结果显示-9999。其余的是0到100之间的数字。

我想在发送到reducer之前过滤掉这些-9999值。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

跳过你不想要的东西应该很简单。如果值不在您想要的范围内,则不要打印它,例如:

#!/usr/bin/env python

import sys

# input comes from STDIN (standard input)
for line in sys.stdin:
    line = line.strip()
    words = line.split()
    fulldate = words[1]
    year = fulldate[0:4]
    if words[15] >= 0 && words[15] <= 100
        print '%s\t%s' % (year, words[15])

如果应用程序需要,可以为每个输入记录生成输出,或者甚至为每个输入生成多个输出记录(通过多次打印)。