概述
我们知道hadoop处理少量大文件比大量小文件的性能要好。如果文件小于hadoop定义的块尺寸(hadoop2.x默认128MB),可以认为是小文件.元数据的增长将转化为Namenode的开销。如果有大量小文件,Namenode会成为瓶颈。为了解决这个问题,hadoop引入了sequence文件,将sequence作为存储小文件的容器。
Sequnce文件是有二进制键值对组成的平面文件。Hive将查询转换成MapReduce作业时,决定一个给定记录的哪些键/值对被使用。Sequence文件是可分割的二进制格式,主要的用途是联合多个小文件。
SEQUENCEFILE格式的输入输入包是:1
2org.apache.hadoop.mapred.SequenceFileInputFormat
org.apache.hadoop.hive.ql.id.HiveSequenceFileOutputFormat
注意:
本段文字来自《Hadoop构建数据仓库实践》书籍6.2.1章节
案例
建立Sequencefile格式表
1 | create table t_sequencefile( |
向表中导入数据
注意
:与TEXTFILE有些不同,应为SEQUENCEFILE是二进制格式,所以需要从其他表向SEQUENCEFILE表插入数据。1
insert overwrite table t_sequencefile select * from t_textfile