• 大数据学习(8)-hive压缩


    &&大数据学习&&

    🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门
    💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博>主哦🤞


    压缩

    Hive表中和计算过程中,保持数据的压缩,对磁盘空间的有效利用和提高查询性能都是十分有益的。

     Hive表数据进行压缩

    在Hive中,不同文件类型的表,声明数据压缩的方式是不同的。

    1)TextFile

    若一张表的文件类型为TextFile,若需要对该表中的数据进行压缩,多数情况下,无需在建表语句做出声明。直接将压缩后的文件导入到该表即可,Hive在查询表中数据时,可自动识别其压缩格式,进行解压。

    需要注意的是,在执行往表中导入数据的SQL语句时,用户需设置以下参数,来保证写入表中的数据是被压缩的。

    --SQL语句的最终输出结果是否压缩

    set hive.exec.compress.output=true;

    --输出结果的压缩格式(以下示例为snappy)

    set mapreduce.output.fileoutputformat.compress.codec =org.apache.hadoop.io.compress.SnappyCodec;

    2)ORC

    若一张表的文件类型为ORC,若需要对该表数据进行压缩,需在建表语句中声明压缩格式如下:

    1. create table orc_table
    2. (column_specs)
    3. stored as orc
    4. tblproperties ("orc.compress"="snappy");

    3)Parquet

    若一张表的文件类型为Parquet,若需要对该表数据进行压缩,需在建表语句中声明压缩格式如下:

    1. create table orc_table
    2. (column_specs)
    3. stored as parquet
    4. tblproperties ("parquet.compression"="snappy");

    计算过程中使用压缩

    1)单个MR的中间结果进行压缩

    单个MR的中间结果是指Mapper输出的数据,对其进行压缩可降低shuffle阶段的网络IO,可通过以下参数进行配置:

    --开启MapReduce中间数据压缩功能

    set mapreduce.map.output.compress=true;

    --设置MapReduce中间数据数据的压缩方式(以下示例为snappy)

    set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;

    2)单条SQL语句的中间结果进行压缩

    单条SQL语句的中间结果是指,两个MR(一条SQL语句可能需要通过MR进行计算)之间的临时数据,可通过以下参数进行配置:

    --是否对两个MR之间的临时数据进行压缩

    set hive.exec.compress.intermediate=true;

    --压缩格式(以下示例为snappy)

    set hive.intermediate.compression.codec= org.apache.hadoop.io.compress.SnappyCodec;

  • 相关阅读:
    MySQL || 数据类型与存储引擎
    5.1 Stream介绍和实战
    Vite + TypeScript + Node 开发一个简易脚手架
    Android项目使用gradle配置新旧方式对比
    AM@两种余项型泰勒公式的对比和总结@常用函数的麦克劳林公式
    Jackson+Feign反序列化问题排查
    【C语言刷LeetCode】1592. 重新排列单词间的空格(E)
    Python 自定义函数的基本步骤
    springboot整合mybatis
    第五届“强网”拟态防御国际精英挑战赛——线上预选赛火热开赛!
  • 原文地址:https://blog.csdn.net/weixin_61006262/article/details/133804504