大数据学习路线之hive存储格式,hive的存储格式通常是三种:textfile 、 sequencefile 、 rcfile 、 orc 、自定义 set hive.default.fileformat=TextFile; 默认存储格式为:textfile textFile:普通文本存储,不进行压缩。查询效率较低。 1.sequencefile: hive提供的二进制序列文件存储,天生压缩。 sequeceFile 和 rcfile都不允许使用load方式加载数据。需要使用insert 方式插入 默认支付压缩、分割,使用便捷、写和查询较快。sequencefile和压缩属性可以搭配使用。 create table if not exists seq1( id int, name string ) row format delimited fields terminated by '\t' lines terminated by '\n' stored as sequencefile ; ###加载数据错误方式 load data local inpath '/home/user' into table seq1; ###加载数据正确方式 insert into table seq1 select * from user1 ; 2.rcfile: rcfile可以进行行列混合压缩,将附近的列和行的数据尽量保存到相同的块里面,该存储格式会提高查询效率,但是写数据较慢。该方式和gzcodeC压缩属性结合不是很好() set mapred.output.compression=true; set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; ###创建rcfile表: create table if not exists rc1( id int, name string ) row format delimited fields terminated by '\t' stored as rcfile ; create table if not exists rc2( id int, name string ) row format delimited fields terminated by '\t' stored as rcfile ; ###加载数据错误方式 load data local inpath '/home/user' into table rc1; ###加载数据正确方式 insert into table rc2 select * from user1 ; 3.存储自定义: 数据: seqyd元数据文件: aGVsbG8saGl2ZQ== aGVsbG8sd29ybGQ= aGVsbG8saGFkb29w seqyd文件为base64编码后的内容,decode后数据为: ##hello,hive ##hello,world ##hello,hadoop create table cus(str STRING) stored as inputformat 'org.apache.hadoop.hive.contrib.fileformat.base64.Base64TextInputFormat' outputformat 'org.apache.hadoop.hive.contrib.fileformat.base64.Base64TextOutputFormat'; LOAD DATA LOCAL INPATH '/home/cus' INTO TABLE cus; 通常是使用 defaultCodec + rcfile搭配效率最好
|