MapReduce电商日志文件分析(一)
MapReduce电商日志文件分析(三)
问题二
Mapper
正常来说,每一条数据中的第14个数据项是ip地址。我们对每一条字符串按分隔符分割,因为考虑到有的一条数据存在缺失数据,所以我们将分割后数组长度小于14的数组过滤掉。再判断 ip 是否为空,不为空则通过调用ip解析的工具类,将ip转换为对应的省份并将其作为键,Reduce统计合并。
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class PageViewMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
private static final IntWritable one = new IntWritable(1);
private Text city = new Text();
@Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
// Split the input line into fields based on the delimiter
String[] fields = value.toString().split(</