文档章节

Hadoop HDFS SequenceFile

fokYaland
 fokYaland
发布于 2015/06/04 17:27
字数 429
阅读 198
收藏 0
SequenceFile 是一个由二进制序列化过的 key/value 的字节流组成的文本存储文件,它可以在map/reduce过程中的input/output 的format时被使用。在map/reduce过程中,map处理文件的临时输出就是使用SequenceFile处理过的。 所以一般的SequenceFile均是在FileSystem中生成,供map调用的原始文件。

SequenceFile 也可用于处理小文件:如果为key小文件名,value为文件内容,则可以将大批小文件合并成一个大文件。

public   class   SequenceFileWriteDemo {
        public   static   void  main(String[] args)  throws  IOException {
               //  TODO  Auto-generated method stub
            String uri =  "file:///Repositories/workspace/Demo/hadoop1/target/seq.sq"   ;
            Configuration conf =  new  Configuration();
            FileSystem fs = FileSystem. get(URI.create (uri), conf);
            
            Path path =  new  Path(uri);
            IntWritable key =  new  IntWritable();
            Text value =  new  Text();
            SequenceFile.Writer writer =  null ;        
               try  {
                  writer = SequenceFile. createWriter(fs, conf, path, key.getClass(), value.getClass());
                  key.set(1);
                  value.set(uri);
                  writer.append(key, value);
            }  finally {
                  IOUtils. closeStream(writer);
            }
      }
}

public   class   SequenceFileReadDemo {
        public   static   void  main(String[] args)  throws  IOException {
               //  TODO  Auto-generated method stub
            String uri =  "file:///Repositories/workspace/Demo/hadoop1/target/seq.sq"   ;
            Configuration conf =  new  Configuration();
            FileSystem fs = FileSystem. get(URI.create (uri), conf);

            Path path =  new  Path(uri);
            SequenceFile.Reader reader =  null ;
               try  {
                  reader =  new  SequenceFile.Reader(fs, path, conf);
                  Writable key = (Writable) ReflectionUtils. newInstance(
                              reader.getKeyClass(), conf);
                  Writable value = (Writable) ReflectionUtils.newInstance(
                              reader.getValueClass(), conf);
                     long  position = reader.getPosition();
                     while  (reader.next(key, value)) {
                        String syncSeen = reader.syncSeen() ?  "*"  :  "" ;
                        System.   out .printf(   "[%s%s]\t%s\t%s\n"  , position, syncSeen, key,
                                    value);
                        position = reader.getPosition();  // beginning of next record
                  }
            }  finally  {
                  IOUtils. closeStream(reader);
            }
      }
}

压缩类型, 由SequenceFile类的内部枚举类CompressionType来表示,定义了三种方式
不采用压缩: CompressionType.NONE
记录级别的压缩: CompressionType.RECORD
块级别的压缩: CompressionType.BLOCK
使用时可以通过参数: io.seqfile.compression.type=[NONE|RECORD|BLOCK] 来指定具体的压缩方式  

可以通过下面命令查看生成的文件内容:
hadoop fs -text  numbers.seq

sequence 文件由一个head 和多个 record 组成。

Head头3个字节为SEQ,跟着1个字节表示版本。然后包括 

















本文转载自:http://blog.csdn.net/yanliang1/article/details/17186573

fokYaland
粉丝 4
博文 68
码字总数 3062
作品 0
东城
私信 提问
[HDFS]HDFS优化-小文件合并.md

hdfs优化-小文件合并 一.背景 hdfs的namenode存储元数据,包含fsimage(存储文件的owership和permissions,文件包含哪些blockid),block保存在哪个datanode,这些信息在启动后加载到内存,所以如...

zemel
2016/07/19
110
0
hive的工作机制

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类似SQL查询功能。 深入浅出学Hive(二) http://my.oschina.net/dfsj66011/blog/601919 hive的工作...

八戒_o
2015/12/22
58
0
Install hadoop, install hive, 及hive的使用

hadoop , hive 安装过程和配置文件(附件)。 注意: hadoop Name Node未做ha. Hive, 还是基本的hive on MR, 未使用on tez, on spark, 未配置LLAP、 HCatalog and WebHCat。 安装完之后,以...

墨子Zhai
01/16
0
0
Hive文件存储格式的测试比较

整理了一下网上的几种Hive文件存储格式的性能与Hadoop的文件存储格式。 Hive的三种文件格式:TEXTFILE、SEQUENCEFILE、RCFILE中,TEXTFILE和SEQUENCEFILE的存储格式都是基于行存储的,RCFIL...

Zero零_度
2016/10/24
16
0
HDFS之SequenceFile和MapFile

Hadoop的HDFS和MapReduce子框架主要是针对大数据文件来设计的,在小文件的处理上不但效率低下,而且十分消耗磁盘空间(每一个小文件占用一个Block,HDFS默认block大小为64M)。解决办法通常是选...

mahout
2012/09/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux输入法fcitx的安装问题

Fcitx 总共要安装的包如下 fcitxfcitx-binfcitx-config-commonfcitx-config-gtk | fcitx-config-gtk2fcitx-datafcitx-frontend-allfcitx-frontend-gtk2fcitx-frontend-gtk3......

CHONGCHEN
57分钟前
4
0
网络基础

前言: 最近整理一些以前的学习笔记(有部分缺失,会有些乱,日后再补)。 过去都是存储在本地,此次传到网络留待备用。 计算机网络的功能: 1.数据通信; 2.资源共享; 3.增加数据可靠性; 4....

迷失De挣扎
58分钟前
7
0
spring boot升级到spring cloud

1、先升级spring boot 版本到2.1.3 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.1.3.RELEAS......

moon888
今天
12
0
从蓝鲸视角谈DevOps

DevOps源于Development和Operations的组合 常见的定义 DevOps是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变...

嘉为科技
今天
1
0
微服务设计 笔记

微服务设计 一、微服务架构理论 1.六边形架构 1)六边形架构(Hexagonal Architecture),又称为端口和适配器架构风格;使用适配器与外界进行交互,外界通过应用层API与内部进行交互。 2)经典...

啃不动地大坚果
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部