Fork me on GitHub

sequencefile方式存储到hive表

概述

我们知道hadoop处理少量大文件比大量小文件的性能要好。如果文件小于hadoop定义的块尺寸(hadoop2.x默认128MB),可以认为是小文件.元数据的增长将转化为Namenode的开销。如果有大量小文件,Namenode会成为瓶颈。为了解决这个问题,hadoop引入了sequence文件,将sequence作为存储小文件的容器。
Sequnce文件是有二进制键值对组成的平面文件。Hive将查询转换成MapReduce作业时,决定一个给定记录的哪些键/值对被使用。Sequence文件是可分割的二进制格式,主要的用途是联合多个小文件。
SEQUENCEFILE格式的输入输入包是:

1
2
org.apache.hadoop.mapred.SequenceFileInputFormat
org.apache.hadoop.hive.ql.id.HiveSequenceFileOutputFormat

注意:本段文字来自《Hadoop构建数据仓库实践》书籍6.2.1章节

案例

建立Sequencefile格式表

1
2
3
4
5
6
7
8
create table t_sequencefile(   
c1 string,
c2 int,
c3 string,
c4 string)
row format delimited
fields terminated by '\t'
stored as sequencefile;

向表中导入数据

注意:与TEXTFILE有些不同,应为SEQUENCEFILE是二进制格式,所以需要从其他表向SEQUENCEFILE表插入数据。

1
insert overwrite table t_sequencefile  select * from t_textfile

本文标题:sequencefile方式存储到hive表

文章作者:tang

发布时间:2018年07月28日 - 01:07

最后更新:2018年07月28日 - 08:07

原始链接:https://tgluon.github.io/2018/07/28/SEQUENCEFILE格式存储到hive表/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------本文结束感谢您的阅读-------------