大数据全系列 教程
1869个小节阅读:466k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
7.7.5 map方法实现
AnalyserLogDataMapper类的map方法实现。
xxxxxxxxxx
@Override
protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, NullWritable, Put>.Context context) throws IOException, InterruptedException {
//一条日志调用一次map方法,所以输入的数据条数加1
this.inputRecords++;
//输出当前处理的日志数据
LOGGER.debug("Analyse data is:"+value.toString());
try {
//解析日志
Map<String, String> clientInfo = LoggerUtil.handleLog(value.toString());
//如果clientInfo对象没有元素,则过滤掉
if(clientInfo.isEmpty()){
this.filterRecords++;
return;
}
//获取事件名称,必须在6种中的某一种,不符合该要求也要过滤掉
String eventAliasName = clientInfo.get(EventLogConstants.LOG_COLUMN_NAME_EVENT_NAME);
//根据eventAliasName转换为EventEnum类对象,方便后续的处理
EventEnum eventEnum = EventEnum.valueOf(eventAliasName);
//判断是否是否为6种事件
switch (eventEnum){
case LAUNCH:
case PAGEVIEW:
case CHARGEREQUEST:
case CHARGEREFUND:
case CHARGESUCCESS:
case EVENT:
//处理数据
this.handleData(clientInfo,eventEnum,context);
break;
default:
//过滤掉
this.filterRecords++;
LOGGER.warn("该条日志无法解析,事件名称为:"+eventAliasName);
}
}catch (Exception e){
//解析出现异常,过滤掉数据
this.filterRecords++;
LOGGER.error("解析日志数据出现异常,数据:"+value.toString(),e);
}
}
private void handleData(Map<String, String> clientInfo, EventEnum eventEnum, Mapper<LongWritable, Text, NullWritable, Put>.Context context) {
}
生成LoggerUtil类,添加一个空的handleLog方法
xxxxxxxxxx
package cn.itbaizhan.etl.util;
import java.util.Map;
public class LoggerUtil {
public static Map<String, String> handleLog(String toString) {
return null;
}
}