hive添加压缩

 hive在存储数据时会对HDFS上的数据做映射,在MYSQL中仅仅存储的是元数据信息。所有的数据都是存储在HDFS上的。

 现在有个需求是需要对hive操作生成的数据改为压缩数据存储,提高HDFS的存储空间利用率。这里有几点需要记录的:

 1.如果是本地文件通过hadoop fs -put 操作上传到HDFS的时候是不会对数据做任何处理的,即使hdfs-site.xml中配置了压缩参数也是不生效的。为什么?因为这个操作仅仅是一个复制的过程。没有调用mapreduce任务,如果想使数据压缩就需要通过mapreduce任务来操作。

 2.由1可知如果简单的把文本数据拷贝到hive表的目录下是不会出现压缩后的数据的,即不会有压缩操作。

 3.hive配置map过程的压缩和最终结果的压缩可以在两个地方:hadoop下的mapred-site.xml中或则hive的hive-site.xml中。如果是前者配置了所有的hadoop上的mapreduce任务都会做压缩处理,如果是后者配置了则只有hive的sql语句所创建的mapreduce任务会做压缩处理。所以如果不想所有的任务都做压缩操作,可以在hive-site.xml中配置。

 4.hive配置压缩可以有两种方式:其一是在hive的shell中 set 各种参数,这个是会话有效的。其二是就是在hive-site.xml中配置是全局有效的。

 5.工作中用到了sqoop直接把数据从数据库中导入到hive中,但是如果sqoop不指定压缩,导入到HDFS中的数据其实还是文本格式。所以需要指定参数 --compression-codec org.apache.hadoop.io.compress.BZip2Codec 来保证导入到HDFS中的数据是使用bzip2的压缩方式(bzip2压缩支持分隔)

 6.下面展示下hive-site.xml中配置的参数列表

    <pr

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值