大数据学习路线之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搭配效率最好。

上一篇:hive存储的文件格式对比


下一篇:impala + kudu | 大数据实时计算踩坑优化指南