下列代码中提取年份和气温怎样执行的?
public class MaxTemperatureMapper
extends Mapper<LongWritable,TextTextIntWritable>{
private static final int MISSING=9999;
@Override
public void map(LongWritable key,Text value,Context context)
throws lOException,InterruptedException{
String line=value.toString();
String year=line.substring(15,19);
int airTemperature;
if(line.charAt(87)=='+'){// parselnt doesnt like leading plus signs airTemperature=Integer.parselnt(line.substring(88,92));
}else {
airTemperature=Integer.parselnt(line.substring(87,92));
}
String quality=line.substring(92,93);
if (airTemperature!=MISSING&&qualitymatches("[01459]")){
context.write(new Text(year),newIntWritable(airTemperature));
}
提取年份和气温的执行由map函数给一个字符串把15到19年份抽取出来,看符号是+还是-,如果是+直接取出4个字符,生成整数,如果是-,把包含-在内的拿出来一起解析,得到温度,01459表示温度质量可以接受,其他不能接受,产生年份+温度的数据。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。