1. 文件格式
在创建表时使用stored as
关键字可以指定表数据的存储格式。hive的表数据存储格式有很多:
注意:一般情况下,对小文件进行建表时,不使用
stored as
关键字,即使用textfile
存储格式;其它情况一般使用orc
存储格式。
1.1 textfile
TextFile是Hive中默认的文件格式,存储形式为按行存储。
例子:
-
创建原数据表并加载原始数据。一般使用load命令加载原始数据。并存储为textfile格式
create table tb_sogou_source( stime string, userid string, keyword string, clickorder string, url string ) row format delimited fields terminated by '\t'; load data local inpath '/root/hivedata/SogouQ.reduced' into table tb_sogou_source;
-
然后要转换为其它表数据存储形式可以使用 insert into + select 语法
create table tb_sogou_text( stime string, userid string, keyword string, clickorder string, url string ) row format delimited fields terminated by '\t' stored as textfile; -- 写入TextFile数据表 insert into table tb_sogou_text select * from tb_sogou_source;
1.2 orc
ORC(OptimizedRC File)文件格式也是一种Hadoop生态圈中的列式存储格式;它的压缩效率非常高,150MB的数据能够压缩到32MB左右。
例子:
create table tb_sogou_orc(
stime string,
userid string,
keyword string,
clickorder string,
url string
)
row format delimited fields terminated by '\t'
stored as orc;
-- 对于非textfile存储格式,必须使用 insert into + select 语法从原始表种导入数据
insert into table tb_sogou_orc
select * from tb_sogou_source;