#!/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值。我怎样才能做到这一点?
答案 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])
如果应用程序需要,可以为每个输入记录生成输出,或者甚至为每个输入生成多个输出记录(通过多次打印)。