- 浏览: 194424 次
文章分类
最新评论
自定义InputFormat 新版API 把真个文件当成一条输入 主要参考 源代码LineRecordReader里面的内容 有些细节还没有理解 WholeFileInputFormat import java.io.IOException; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.BytesWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.InputSplit; import org.apache.hadoop.mapreduce.JobContext; import org.apache.hadoop.mapreduce.RecordReader; import org.apache.hadoop.mapreduce.TaskAttemptContext; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; public class WholeFileInputFormat extends FileInputFormat<Text, BytesWritable> { @Override public RecordReader<Text, BytesWritable> createRecordReader( InputSplit arg0, TaskAttemptContext arg1) throws IOException, InterruptedException { // TODO Auto-generated method stub return new WholeFileRecordReader(); } @Override protected boolean isSplitable(JobContext context, Path filename) { // TODO Auto-generated method stub return false; } } WholeFileRecordReader import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.BytesWritable; import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.InputSplit; import org.apache.hadoop.mapreduce.RecordReader; import org.apache.hadoop.mapreduce.TaskAttemptContext; import org.apache.hadoop.mapreduce.lib.input.FileSplit; import org.apache.hadoop.mapreduce.lib.input.LineRecordReader; public class WholeFileRecordReader extends RecordReader<Text, BytesWritable> { private FileSplit fileSplit; private FSDataInputStream fis; private Text key = null; private BytesWritable value = null; private boolean processed = false; @Override public void close() throws IOException { // TODO Auto-generated method stub //fis.close(); } @Override public Text getCurrentKey() throws IOException, InterruptedException { // TODO Auto-generated method stub return this.key; } @Override public BytesWritable getCurrentValue() throws IOException, InterruptedException { // TODO Auto-generated method stub return this.value; } @Override public void initialize(InputSplit inputSplit, TaskAttemptContext tacontext) throws IOException, InterruptedException { fileSplit = (FileSplit) inputSplit; Configuration job = tacontext.getConfiguration(); Path file = fileSplit.getPath(); FileSystem fs = file.getFileSystem(job); fis = fs.open(file); } @Override public boolean nextKeyValue() { if(key == null){ key = new Text(); } if(value == null){ value = new BytesWritable(); } if(!processed){ byte[] content = new byte[(int) fileSplit.getLength()]; Path file = fileSplit.getPath(); System.out.println(file.getName()); key.set(file.getName()); try { IOUtils.readFully(fis, content, 0, content.length); //value.set(content, 0, content.length); value.set(new BytesWritable(content)); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ IOUtils.closeStream(fis); } processed = true; return true; } return false; } @Override public float getProgress() throws IOException, InterruptedException { // TODO Auto-generated method stub return processed? fileSplit.getLength():0; } } 验证 public static class mapper extends Mapper<Text, BytesWritable, Text, Text>{ @Override protected void map(Text key, BytesWritable value, Context context) throws IOException, InterruptedException { // TODO Auto-generated method stub context.write(key, new Text(value.getBytes())); } } note:value是BytesWritable类型,显示为十六进制数, new Text(value.getBytes()) 变成字符串形式
发表评论
-
多表join的一个优化思路
2012-11-20 11:24 1470big table:streamed small table: ... -
好的网站
2012-09-20 22:17 7911. http://www.cnblogs.com/luche ... -
Hadoop 任务流程
2012-09-07 16:18 829简单的来说分为四个阶段:InputFormat/MapTask ... -
Hadoop关于最大map reducer数目
2012-08-14 20:53 988mapred-site.xml文件: <prop ... -
java.io.IOException:Typemismatch in key from map:expected org.apache.hadoop.io
2012-08-14 20:53 1459解决办法: jo ... -
HDFS 输入文件避免切分
2012-08-14 20:52 1124自定义InputFormat的子类,并把重载方法 ... -
Hadoop 开启debug信息
2012-08-14 20:51 4000运行hadoop程序时,有时候你会使用一些System. ... -
Hadoop 关于0.95/1.75 * (number of nodes)误解
2012-08-14 20:51 986reduce任务槽,即集群能够同时运行的redu ... -
MapReduce ReadingList
2012-08-09 12:22 7031. http://www.aicit.org/jcit/gl ... -
"hadoop fs 和hadoop dfs的区别"
2012-05-30 15:27 1936粗略的讲,fs是个比较抽象的层面,在分布式环境中,fs就是df ... -
Hadoop 自动清除日志
2012-05-29 18:02 949hadoop集群跑了很多的任务后 在hadoop.log ... -
DistributedCache FileNotFoundException
2012-05-26 18:02 1000此时注意两种文件路径表示形式,一个在HDFS中。一一个是本地文 ... -
Cygwin 不支持native lib 不支持使用native lib 提供的压缩
2012-05-25 13:33 1151弄了一个上午hadoop的压缩,一直报错NullPointer ... -
Hadoop 在Window下搭建 守护进程启动问题
2012-05-23 15:27 827hadoop version “0.20.2” java ... -
Cygwin ssh Connection closed by ::1
2012-05-17 21:09 1145在Win7下Cygwin中,使用sshlocalhost命令, ... -
Eclipse:Run on Hadoop 没有反应
2012-05-10 20:11 902hadoop-0.20.2下自带的eclise插件没有用,需要 ... -
Hadoop SequcenceFile 处理多个小文件
2012-04-29 11:04 3889利用sequenceFile打包多个小文件,MapFile是s ... -
Hadoop 自定义计数器
2012-04-22 09:04 1498public static class mapper e ... -
MapReduce : Combiner的使用(以平均数为例) 并结合in-mapper design pattern 实例
2012-04-10 18:51 4342没有使用Combiner 和 in-mapper des ... -
Hadoop NameNode backup
2012-03-24 18:12 861NameNode: <property> ...
相关推荐
例如,如果你正在处理一种结构化的日志文件,其中每个事件由开始和结束的特定字符串包围,你可以在RecordReader中寻找这些限定符,然后将限定符之间的内容作为键值对返回。这样,Mapper就可以直接处理事件数据,而...
### MapReduce: 简化的大型集群数据处理 #### 一、引言 《MapReduce: Simplified Data Processing on Large Clusters》这篇论文由Google的研究员Jeffrey Dean和Sanjay Ghemawat撰写,旨在介绍一种名为MapReduce的...
这是谷歌三大论文之一的 MapReduce: Simplified Data Processing on Large Clusters 英文原文。我的翻译可以见https://blog.csdn.net/m0_37809890/article/details/87830686
MapReduce 是一种编程模型,由 Jeffrey Dean 和 Sanjay Ghemawat 于 2004 年提出,用于处理大规模数据集的分布式计算。该模型将计算任务分解成两个主要阶段:Map 和 Reduce。Map 阶段将输入数据处理成中间键值对,而...
### MapReduce:简化大型集群上的数据处理 #### 概述 MapReduce是一种编程模型及其相应的实现方式,旨在处理和生成大型数据集。该技术由谷歌的Jeffrey Dean和Sanjay Ghemawat提出,用于解决大规模数据处理的问题。...
### MapReduce:简化大型集群上的数据处理 #### 概述 MapReduce是一种高效的数据处理模型,主要用于处理和生成大规模数据集。它通过将数据处理任务分解为“映射(Map)”和“归并(Reduce)”两个阶段,极大地简化...
在MapReduce框架中,"WordCount"是一个经典的例子,用于演示如何处理大数据并进行简单的统计。这个任务的主要目标是计算文本文件中每个单词出现的次数。在这个特定的案例中,我们不仅实现了基本的WordCount功能,还...
MapReduce是一种编程模型,专为处理和生成大型数据集而设计。它简化了在超大机群中进行数据处理的复杂性,使程序员无需深入掌握并行分布式处理系统的细节就能编写程序。MapReduce的核心思想是将计算过程分为两个主要...
在MapReduce编程模型中,InputFormat是至关重要的组件,它负责将存储在HDFS(Hadoop Distributed File System)上的数据转化为可以被MapTask处理的键值对。本文将深入讲解MapReduce的InputFormat,特别是默认的...
在大数据处理领域,Apache Hadoop 的 MapReduce 框架是一个关键组件,它为大规模数据集的并行处理提供了高效且可扩展的解决方案。MapReduce2(也称为 YARN)是 Hadoop 2.x 版本引入的重要改进,旨在解决原 MapReduce...
MapReduce是Google公司开发的一种编程模型和实现方法,用于处理和生成大规模数据集。该模型允许用户指定一个Map函数,以处理键值对,并生成中间键值对;然后,指定一个Reduce函数,以合并所有与同一个中间键关联的...
MapReduce是一种分布式编程模型,由Google开发,用于处理和生成大型数据集。它将复杂的并行数据处理任务分解为两个阶段:Map(映射)和Reduce(化简)。在这个Nkeys,Nfiles的终极解决方案中,主要关注的是MapReduce...
MapReduce模型是Hadoop框架的核心组件之一,它用于分布式地处理大量数据。MapReduce的主要思想是将复杂的、运行在一个分布式系统上的大规模数据处理任务分解成两个阶段:Map(映射)阶段和Reduce(归约)阶段。...
默认情况下,Hadoop的`LineRecordReader`类将每一行作为一个记录进行处理,而对行内数据的分隔则需要用户自定义。在处理格式复杂、分隔符不固定的日志文件时,我们需要对`LineRecordReader`进行扩展,以实现自定义...
在Hadoop的生态系统中,MapReduce是处理海量数据的一种编程模型,而InputFormat作为MapReduce编程模型的重要组成部分,是负责处理输入数据的关键接口。为了深入理解MapReduce工作原理,必须掌握InputFormat的设计和...
假设文件的量比较大,每个文档又包含大量的单词,则无法使用传统的线性程序进行处理,而这类问题正是 MapReduce 可以发挥优势的地方。 在前面《MapReduce实例分析:单词计数》教程中已经介绍了用 MapReduce 实现单词...
MapReduce 2.0是Hadoop生态系统中的一个关键组件,用于大规模数据处理。它通过将复杂的计算任务分解为可并行执行的Map和Reduce阶段,实现了高效的数据处理能力。在这个框架下,程序员可以使用多种语言编写应用程序,...
MapReduce的翻译,我只是个搬运工qwq
在大数据处理领域,MapReduce是一种广泛使用的编程模型,尤其适合处理和存储海量数据。本话题主要探讨如何利用MapReduce解析网络日志文件,或者从MySQL数据库中获取记录,并计算相邻日志记录之间的间隔时长。这涉及...