下面是关于LineRecoedReader的NextKeyValue代码:
public boolean nextKeyValue() throws IOException {
if (key == null) {
key = new LongWritable();
}
key.set(pos);
if (value == null) {
value = new Text();
}
int newSize = 0;
while (pos < end) {
newSize = in.readLine(value, maxLineLength,
Math.max((int)Math.min(Integer.MAX_VALUE, end-pos),
maxLineLength));
if (newSize == 0) {
break;
}
pos += newSize;
if (newSize < maxLineLength) {
break;
}
// line too long. try again
LOG.info("Skipped line of size " + newSize + " at pos " +
(pos - newSize));
}
if (newSize == 0) {
key = null;
value = null;
return false;
} else {
return true;
}
}
在key.set(pos)中,pos是该Line的位置,value是该Line的内容,有一个例子说明,是权威指南中的:
On the top of the Crumpetty Tree
The Quangle Wangle sat,
But his face you could not see,
On account of his Beaver Hat.
该记录被LIneRecordReader处理为4条K/V对:
(0, On the top of the Crumpetty Tree)
(33, The Quangle Wangle sat,)
(57, But his face you could not see,)
(89, On account of his Beaver Hat.)
结合wordcount的例子,每一次mapper处理的K/V对,对value进行处理,StringTokenizer itr = new StringTokenizer(value.toString()),将value分割成一个一个的标记,经过mapper的处理。生成如下格式的中间体:
(On,1),(the,1),(top,1),(of,1).....再由job将这个中间体传给reducer进行排序和汇总;
所以,一个job的input从输入到mapper的输出大概是这样:
从FIleInputFormat.addInputPath(args),将input提交给FileInputFormat的getSplit()进行分块,在本例中,TextIputFormat获取每一行数据的LineRecordReader,用LineRecord进行从K/V对的读取,LineRecord其实是就像是读取器,具体的从输入流中读取数据的任务是它完成的,最后读取的K/V对交由mapper进行处理。
分享到:
相关推荐
Hadoop源代码分析完整版.pdf
Hadoop 的源代码分析可以分为三个部分:HDFS、MapReduce 和其他组件。 HDFS HDFS 是 Hadoop 的核心组件之一,是一个分布式文件系统。HDFS 的主要功能是提供一个高可靠、高可扩展的文件系统,可以存储大量的数据。...
《Hadoop源代码分析》是一本深入探讨Hadoop核心组件MapReduce的专著。Hadoop是Apache软件基金会的一个开源项目,旨在提供分布式存储和计算框架,以处理和存储大量数据。MapReduce是Hadoop的核心计算模型,它通过将大...
深入云计算:Hadoop源代码分析(修订版)
### 深入云计算 Hadoop源代码分析 #### 一、引言 随着大数据时代的到来,数据处理成为了各个领域中的关键技术之一。Hadoop作为一个开源的大数据处理框架,因其优秀的分布式计算能力,在业界得到了广泛的应用。...
Hadoop分析气象数据完整版源代码(含Hadoop的MapReduce代码和SSM框架) 《分布式》布置了一道小作业,这是作业的所有代码,里面包含了Hadoop的MapReduce代码、和SSM框架显示数据的代码
"Hadoop源代码分析完整版" Hadoop作为一个开源的分布式计算框架,具有高可扩展性和高性能的特点。Hadoop的源代码分析可以分为多个部分,包括HDFS、MapReduce、YARN等。 首先,让我们了解Hadoop的架构。Hadoop的...
在IT行业中,Hadoop是一个广泛使用的开源大数据处理框架,它主要由Apache软件基金会维护。...在阅读博客文章《Hadoop源代码分析(一)》时,可以结合Hadoop的源码,逐步揭开这个强大框架的神秘面纱。
在这个项目中,我们重点关注的是一套完整的Hadoop分析气象数据的代码,这涉及到分布式计算、数据处理以及数据可视化等多个关键知识点。 首先,我们要理解Hadoop的核心组件:HDFS(Hadoop Distributed File System)...
### Hadoop源代码分析知识点详解 #### 一、Hadoop与云计算的核心技术 Hadoop作为分布式计算领域的核心框架,其源代码分析对于深入理解云计算的底层实现至关重要。Hadoop最初的设计灵感来源于Google的一系列论文,...
### Hadoop源代码分析知识点详解 #### 一、Hadoop背景与关键技术介绍 Hadoop作为一款开源的大数据处理框架,其设计灵感源自Google的一系列核心论文。这些论文详细阐述了Google构建其基础设施的方法论和技术原理,...
在Hadoop源代码分析中,首先,我们可以看到HDFS(Hadoop分布式文件系统)是所有基于Hadoop项目的基础。HDFS的设计灵感来源于Google的GFS(Google File System),它通过将大文件分割成块并复制到多个节点来确保数据...
根据提供的文件内容,以下是关于Hadoop源代码分析的知识点总结。 首先,Hadoop项目起源于Google的核心技术论文。Google开发了一系列创新技术用于构建其大规模的分布式计算平台,这些技术包括Google Cluster、Chubby...
在大数据处理领域,Hadoop和HBase是两个非常重要...以上就是关于"Hadoop代码"资源的详细解析,这个资源提供了从基础API使用到高级优化策略的全面学习材料,对于想要深入理解并应用Hadoop和HBase的开发者来说极具价值。
- 性能调优:学习如何通过调整参数和优化代码来提升Hadoop集群的性能。 通过深入学习和理解Hadoop源码,你将能够更好地驾驭这个强大的大数据处理工具,解决实际项目中的问题,甚至为Hadoop社区贡献自己的改进和...
三、源代码学习要点 1. 文件系统接口:了解HDFS如何通过FSDataInputStream和FSDataOutputStream进行文件读写,以及如何实现文件的创建、删除和移动操作。 2. 数据块与副本策略:研究HDFS如何决定数据块大小和副本...