美文网首页
HIVE高级-格式存储

HIVE高级-格式存储

作者: 糊涂蟲 | 来源:发表于2018-08-16 20:18 被阅读0次

    一、file_format种类

            TEXTFILE  ----------  default

            RCFILE    ----------    Hive 0.6.0 and later

            ORC        ----------      Hive 0.11.0  and later

            PARQUET  ----------    Hive 0.13.0  and later

        file_format配合压缩使用不仅能节省存储空间,还能提升执行效率

    二、行式存储 vs 列式存储

    行式存储的优点:

    同一行数据存放在同一个block块里面,select * from table_name;数据能直接获取出来;

     INSERT/UPDATE比较方便

    行式存储的缺点:

    不同类型数据存放在同一个block块里面,压缩性能不好;

    select id,name from table_name;这种类型的列查询,所有数据都要读取,而不能跳过。

    列式存储的优点:

    同类型数据存放在同一个block块里面,压缩性能好;

    任何列都能作为索引。

    列式存储的缺点:

    select * from table_name;这类全表查询,需要数据重组;

    INSERT/UPDATE比较麻烦。

    三、file_format详解

        最后加stored as  file_format

        格式存储导入数据不能用load,因为创建后的表指定了存储格式肯定不是文本格式,本地数据格式为文本,两者不一致;所以需要用insert into table xxx select * from ruoze_page_views;

        TEXTFILE:默认 文本格式 18.1M

        SEQUENCEFILE: 二进制的,现在基本不用,结果会大于原始数据,好处有同步位在里面,查询时候是可以跳过一些不必要的东西 19.6

        RCFILE : row group 混合行列,能保证同一行的所有列都在一个block上, 缺点row group 太小,仅有40M  17.9M

        ORC:优化过后的rc strip 250M  包含index 、rowdata 、strip footer 2.8M 默认采用bzip 如果不采用压缩 7.7M

        parquet:源于dremel 不压缩状态13.1M  set parquet.compression = Gzip  3.9M

        行式储存和列式储存读数据的对比:

        select count(1) from ruoze_page_views where session_id='B58W48U4WKZCJ5D1T3Z9ZY88RU7QA7B1';

        读取的文件数:19022752

        orc:

        select count(1) from ruoze_page_views_orc where session_id='B58W48U4WKZCJ5D1T3Z9ZY88RU7QA7B1';

        读取的文件数:1257523

        parquet:

        查一列:

        select count(1) from ruoze_page_views_parquet where session_id='B58W48U4WKZCJ5D1T3Z9ZY88RU7QA7B1';

        读取的文件数:2687077

        查两列:

        select count(1) from ruoze_page_views_parquet where session_id='B58W48U4WKZCJ5D1T3Z9ZY88RU7QA7B1' and ip='1';

        读取的文件数:3496487

    相关文章

      网友评论

          本文标题:HIVE高级-格式存储

          本文链接:https://www.haomeiwen.com/subject/vlqgbftx.html