hadoop mapreduce 中java用gson类库解析json

废话不说,代码如下:


import java.io.IOException;
import java.lang.reflect.Type;
import java.util.Iterator;
/*import java.util.ArrayList;

import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;*/

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class ParseLogMapper extends Mapper<LongWritable, Text, Text, Text> {

@Override
public void map(LongWritable key, Text value,
Context context)
throws IOException, InterruptedException {
try{
String json;
String line = value.toString();
String[] data = line.split("\\t");
LogColumns logColumns = new LogColumns();
logColumns.reqTime = data[0];
logColumns.reqIp = data[1];

json = data[2];

Type type = new TypeToken<LogJson>() {
}.getType();
Gson gson = new Gson();
LogJson logJson = gson.fromJson(json, type);
logColumns.devMac = logJson.getMac();
logColumns.devType = logJson.getDevice();
logColumns.devVersion = logJson.getVersion();
logColumns.report = "download";
//System.out.println(b.getRows());
//System.out.println(logJson.getAppList().size());
Iterator<AppInfo> i=logJson.getAppList().iterator();

while(i.hasNext()){
AppInfo appInfo = i.next();
logColumns.appName = appInfo.getkTitle();
logColumns.appid = appInfo.getkAppID();
logColumns.actionTime = appInfo.getkDownloadDate();
context.write(new Text(logColumns.toString()), new Text());

}



}catch(Exception e){

}
}
}

附件是gson类库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值