hive的文件存储格式

Hive支持的文件存储格式有

  • TEXTFILE

  • SEQUENCEFILE

  • RCFILE

  • Parquet

  • ORCFile

  • 自定义格式
    在建表的时候,可以使用STORED AS子句指定文件存储的格式。一般情况下,先建立一张存储格式为TEXTFILE的表,然后建立一张同类型、存储格式不同(ORC/PARQUET)的表,一方面实现数据压缩,另外增加查询效率。
    TEXTFILE
    即通常说的文本格式,默认长期,数据不做压缩,磁盘开销大、数据解析开销大。
    SEQUENCEFILE
    Hadoop提供的一种二进制格式,使用方便、可分割、可压缩,并且按行进行切分
    RCFILE
    一种行列存储相结合的存储方式,首先,其将数据按行分块,保证同一条记录在一个块上,避免读一条记录涉及多个块。
    其次,块上的数据按照列式存储,有利于数据压缩和快速地进行列存取。
    在这里插入图片描述
    ORCFile
    ORC是在一定程度上扩展了RCFile,是对RCFile的优化。
    在这里插入图片描述根据结构图,我们可以看到ORCFile在RCFile基础上引申出来Stripe和Footer等。每个ORC文件首先会被横向切分成多个Stripe,而每个Stripe内部以列存储,所有的列存储在一个文件中,而且每个stripe默认的大小是250MB,相对于RCFile默认的行组大小是4MB,所以比RCFile更高效。

    create table Addresses (
    name string,
    street string,
    city string,
    state string,
    zip int
    ) stored as orc tblproperties (“orc.compress”=“NONE”);

orc存储格式的压缩形式包括:NONE, ZLIB, SNAPPY,默认情况下(不添加tblproperties (“orc.compress”=“NONE”)),orc选择ZLIB压缩形式,开发中经常采用SNAPPY压缩形式。
Parquet
Parquet是面向分析型业务的列式存储格式,具有高压缩比,Spark已经将Parquet设为默认的文件存储格式,Cloudera投入了很多工程师到Impala+Parquet相关开发中,Hive/Pig都原生支持Parquet。Parquet现在为Twitter至少节省了1/3的存储空间,同时节省了大量的表扫描和反序列化的时间。

> CREATE TABLE employee_par_snappy    //创建子表
> ROW FORMAT DELIMITED 
> FIELDS TERMINATED BY '\t' 
> STORED AS  PARQUET TBLPROPERTIES('parquet.compression'='SNAPPY')    //设置压缩形式
>AS select * from employee;    

自定义文件格式
用户通过实现InputFormat和OutputFormat来自定义输入输出格式。

猜你喜欢

转载自blog.csdn.net/weixin_41907511/article/details/84783540