`

Hadoop SequcenceFile 处理多个小文件

 
阅读更多

利用sequenceFile打包多个小文件,MapFile是sequenceFile的排序形式,程序如下:

 

public class testSequenceFile {

	public static void main(String[] args) throws IOException{
		Configuration conf = new Configuration();
		
		FileSystem fs = FileSystem.get(conf);
		FileStatus[] files = fs.listStatus(new Path(args[0]));
		
		Text key = new Text();
		Text value = new Text();
		SequenceFile.Writer writer = SequenceFile.createWriter(fs, conf, new Path(args[1]),key.getClass() , value.getClass());
		InputStream in = null;
		byte[] buffer = null;
		
		for(int i=0;i<files.length;i++){
			key.set(files[i].getPath().getName());
			in = fs.open(files[i].getPath());
			buffer = new byte[(int) files[i].getLen()];
			IOUtils.readFully(in, buffer, 0, buffer.length);
			value.set(buffer);
			IOUtils.closeStream(in);
			System.out.println(key.toString()+"\n"+value.toString());
			writer.append(key, value);
		}	
		
		IOUtils.closeStream(writer);
	}
}

 

 

 

 这里需要注意的是sequenceFile是二进制文件,cat more less 之类的命令都不能以文本形式显示顺序文件的内容,需要用到fs命令的-text选项,该选项可以查看文件的代码,检测出文件的类型并适当的转化成文本,如下图“

 

KeXie@KeXie-PC ~/hadoop-0.20.2
$ hadoop fs -cat soutput
SEQorg.apache.hadoop.io.Textorg.apache.hadoop.io.Text*org.apache.hadoop.io.compress.DefaultCodec▒A▒=▒▒=U▒2▒,a.txtx▒▒▒L▒,*▒▒,,M▒▒▒▒<▒A#b.txtx▒▒L▒H▒▒▒y▒\▒▒▒y▒\@6n:c.txtx▒▒+*▒▒,,M▒▒▒▒%▒▒
KeXie@KeXie-PC ~/hadoop-0.20.2
$ hadoop fs -text soutput
a.txt   xie     chen     liang
quan
b.txt   chen    chen    wen
an
wen
c.txt   mo     an
an
 

 

分享到:
评论

相关推荐

    第四章(Hadoop大数据处理实战)Hadoop分布式文件系统.pdf

    第四章(Hadoop大数据处理实战)Hadoop分布式文件系统.pdf第四章(Hadoop大数据处理实战)Hadoop分布式文件系统.pdf第四章(Hadoop大数据处理实战)Hadoop分布式文件系统.pdf第四章(Hadoop大数据处理实战)Hadoop分布式文件...

    Hadoop关于处理大量小文件的问题和解决方法.docx

    此外,MultiFileInputSplit可以让一个Map Task处理多个输入split,进一步提高效率。 小文件产生的原因主要有两种。一是日志类文件,由于HDFS早期不支持文件追加,所以通过创建多个小文件来存储新数据。二是本身就很...

    hadoop3.3.0-winutils所有bin文件

    Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它允许在大规模集群上处理海量数据。Hadoop 3.3.0是该框架的一个版本,它带来了许多改进和新特性,旨在提升性能、稳定性和可扩展性。WinUtils是Hadoop在...

    hadoop的dll文件 hadoop.zip

    在提供的信息中,我们关注的是"Hadoop的dll文件",这是一个动态链接库(DLL)文件,通常在Windows操作系统中使用,用于存储可由多个程序共享的功能和资源。Hadoop本身是基于Java的,因此在Windows环境下运行Hadoop...

    《Hadoop大数据开发实战》教学教案—03HDFS分布式文件系统.pdf

    本节课程主要介绍 HDFS 的概念、HDFS 存储架构和数据读写流程、HDFS 的 Shell 命令、Java 程序操作 HDFS、Hadoop 序列化、Hadoop 小文件处理、通信机制 RPC 等知识点。 HDFS 概念 HDFS(Hadoop Distributed File ...

    一种基于Hadoop的海量非独立小文件关联存储方法.pdf

    Hadoop作为一个分布式计算框架,虽然在处理大文件方面表现出色,但对于大量小文件的处理却存在效率低下的问题。这是因为Hadoop的默认文件系统HDFS(Hadoop Distributed File System)是为处理大文件而设计的,其设计...

    hadoop2.8 window支持bin文件

    Hadoop是大数据处理领域的重要工具,它是一个分布式文件系统,为大规模数据集提供了高吞吐量的数据访问。本文将详细讲解如何在Windows环境下使用Hadoop 2.8,并重点介绍"bin"目录及其作用。 首先,Hadoop 2.8是在...

    Hadoop示例程序合并文件

    - Map阶段:在Map任务中,每个节点上的Mapper进程对分配给它的数据块进行处理,例如,可以将多个小文件合并为一个大文件。 - Shuffle和Sort:Mapper的输出被排序并分组,准备传递给Reducer。 - Reduce阶段:...

    sequenceFile打包多个小文件

    SequenceFile打包多个小文件 SequenceFile是一种基于Hadoop的文件格式,用于存储大量小文件。SequenceFile的优点是可以高效地存储和读取大量小文件,同时也可以对小文件进行排序、压缩和加密等操作。 ...

    搭建hadoop集群的全部配置文件

    在搭建Hadoop集群的过程中,配置文件起着至关重要的作用,它们定义了集群的运行方式、节点间通信方式以及数据存储和处理的策略。本压缩包包含的文件是全面的Hadoop集群配置集合,旨在帮助用户顺利构建和管理自己的...

    Hadoop与Eclipse连接所需文件

    在IT行业中,Hadoop是一个广泛使用的开源框架,主要用于大数据处理和分析。它允许分布式存储和并行处理海量数据,极大地提升了处理效率。Eclipse则是一款强大的集成开发环境(IDE),适用于多种编程语言,包括Java,...

    在windows中配置hadoop很重要的两个文件

    本文将详细解析标题和描述中提及的两个重要文件:`winutils.exe`和`hadoop.dll`,以及如何在Windows上正确配置它们。 首先,`winutils.exe`是Hadoop在Windows操作系统上的一个实用工具,它提供了类似Linux环境下`...

    winutils多个Hadoop版本

    winutils.exe是在window系统上安装hadoop时所需要的winutils文件,内附多个版本,支持 hadoop-2.6.3 hadoop-2.6.4 hadoop-2.7.1 hadoop-2.8.0-RC3 hadoop-2.8.1 hadoop-2.8.3 hadoop-3.0.0 已通过本人对 Hadoop-...

    Hadoop本地环境配置 需要的文件hadoopdll和winutilexe.zip

    在IT行业中,Hadoop是一个广泛使用的开源框架,主要用于大数据处理和分析。它允许分布式存储和并行处理大量数据,极大地提升了处理效率。本教程将详细讲解如何在Windows环境下配置Hadoop本地开发环境,以及如何利用...

    hadoop2.8.4安装扩展、依赖文件

    标题 "hadoop2.8.4安装扩展、依赖文件" 描述了在Windows操作系统上部署Hadoop 2.8.4版本时所面临的一个关键问题,即需要特定的Windows扩展和工具来支持其正常运行。这里的核心是`hadoop.dll`和`winutils.exe`,它们...

    《Hadoop海量数据处理》高清完整PDF版

    Hadoop是Apache软件基金会开发的一个开源分布式计算平台,其核心是Hadoop分布式文件系统(HDFS)和MapReduce编程模型。HDFS是一种高度容错的系统,适合于大数据存储,能够将大型数据集分割成块,分散存储在多台机器...

    hadoop2.7.3的hadoop.dll和winutils.exe

    在IT行业中,Hadoop是一个广泛使用的开源框架,主要用于大数据处理和分布式存储。...这两个文件的提供使得开发者和数据工程师能够在Windows平台上充分利用Hadoop的强大功能,进行大数据分析和处理。

    hadoop3.1.1native文件含zstd

    至于压缩包中的"native"文件,这很可能是一个包含编译好的Hadoop native库的文件夹,其中可能有动态链接库(如libhadoop.so)和其他相关文件,这些文件需要正确地配置和安装到Hadoop环境才能使用。在部署Hadoop集群...

Global site tag (gtag.js) - Google Analytics