废话不说,代码如下:
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类库。
分享到:
相关推荐
在Hadoop MapReduce中,我们通常将这个过程分为两个阶段:Map阶段和Reduce阶段。 Map阶段的主要任务是对输入的文档进行切分,生成词频键值对。对于每个文档,我们需要读取内容,将文档拆分成单词,并为每个单词计算...
本文将深入探讨如何使用Java编程语言来操作Hadoop MapReduce进行基本实践,通过源码分析来理解其核心工作原理和编程模型。 MapReduce的核心思想是将大规模数据集分解成小块,然后在分布式集群上并行处理这些小块,...
在这个案例中,我们将深入探讨如何在 Hadoop 环境中使用 MapReduce 实现 WordCount。 【描述】在 Hadoop 环境中,WordCount 的实现主要涉及两个关键阶段:Map 阶段和 Reduce 阶段。Map 阶段将原始输入数据(通常是...
在MapReduce中,数据处理分为两个主要阶段:Map阶段和Reduce阶段。Map阶段将原始数据分解成小块,然后对每个小块进行并行处理;Reduce阶段则负责聚合Map阶段的结果,输出最终结果。 在这个"大数据Hadoop MapReduce...
《Hadoop MapReduce实战手册》是一本专注于大数据处理技术的专著,主要针对Apache Hadoop中的MapReduce框架进行了深入的探讨。MapReduce是Hadoop生态系统中的核心组件之一,用于处理和生成大规模数据集。该书旨在...
《Hadoop MapReduce Cookbook 源码》是一本专注于实战的书籍,旨在帮助读者通过具体的例子深入理解并掌握Hadoop MapReduce技术。MapReduce是大数据处理领域中的核心组件,尤其在处理大规模分布式数据集时,它的重要...
Python在Hadoop MapReduce中的使用,通常通过Hadoop Streaming实现。这是一个允许使用任何可生成输入/输出流的可执行程序(如Python脚本)作为Map和Reduce任务的框架。在Python脚本中,我们需要定义map()和reduce()...
**Hadoop MapReduce V2** 是Hadoop生态系统中的一个关键组件,用于处理大规模数据集。相较于V1版本,V2版本在架构上进行了重大改进,引入了**YARN(Yet Another Resource Negotiator)**来分离资源管理和任务调度/...
该开源项目利用Hadoop MapReduce技术,以Java为主要开发语言,融合了HTML和JavaScript,整体包含176个文件,其中Java源文件63个,XML配置文件16个,JSON文件17个,CRC文件24个,HTML文件5个,文本文件4个,属性文件3...
在大数据处理领域,Apriori算法与Hadoop MapReduce的结合是实现大规模数据挖掘的关键技术之一。Apriori算法是一种经典的关联规则学习算法,用于发现数据集中频繁出现的项集,进而挖掘出有趣的关联规则。而Hadoop ...
1、程序设计模式不容易使用,而且 Hadoop 的 Map Reduce API 太过低级,很难提高开发者的效率。 2、有运行效率问题,MapReduce 需要将中间产生的数据保存到硬盘中,因此会有读写数据延迟问题。 3、不支持实时处理...
Hadoop MapReduce v2 Cookbook (第二版), Packt Publishing
Hadoop MapReduce 是 Hadoop 生态系统中的一部分,它是一种可靠的、可扩展的并行处理框架,用于处理大规模数据集。MapReduce 是一种编程模型,它将计算任务分解为两个阶段:Map 阶段和 Reduce 阶段。 Map 阶段的...
基于Hadoop Mapreduce 实现酒店评价文本情感分析(python源码+项目说明).zip基于Hadoop Mapreduce 实现酒店评价文本情感分析(python源码+项目说明).zip基于Hadoop Mapreduce 实现酒店评价文本情感分析(python...
一个自己写的Hadoop MapReduce实例源码,网上看到不少网友在学习MapReduce编程,但是除了wordcount范例外实例比较少,故上传自己的一个。包含完整实例源码,编译配置文件,测试数据,可执行jar文件,执行脚本及操作...
基于Hadoop Mapreduce 实现酒店评价文本情感分析(python开发源码+项目说明).zip基于Hadoop Mapreduce 实现酒店评价文本情感分析(python开发源码+项目说明).zip基于Hadoop Mapreduce 实现酒店评价文本情感分析...
YARN的引入则将资源管理和作业调度从MapReduce中分离出来,提高了系统的灵活性和效率。 Hadoop MapReduce v2的主要改进包括: 1. **YARN架构**:YARN将JobTracker的功能拆分为ResourceManager(RM)和...
Hadoop MapReduce 编程实战 ...通过了解 MapReduce 编程基础、MapReduce 项目实践、MapReduce 编程模型、Deduplication、MAC 地址统计和计数器的使用,我们可以更好地掌握 Hadoop MapReduce 的编程技术。
在大数据处理领域,Hadoop MapReduce 是一种广泛使用的分布式计算框架,它允许高效地处理海量数据。KMeans 是一种常见的无监督机器学习算法,用于聚类分析,将数据集中的对象按照相似性分组成不同的簇。现在我们来...