1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| 主要介绍的hive数据的压缩,和窗口函数
为什么需要压缩? 压缩以后存储空间会小很多, 涉及到传输数据的话,传输的数据会节省很多时间,比如你的数据是100M你要传输到网络上去是不是需要100M,但是你如果压缩过后你只需要20M呢?
那么这样的话,网络的开销会小很多。
1、节省磁盘空间 2、网络传输,开销也小了很多
特别是在真实的场景下,我们有很多数据是冗余的,在这种情况下,如果我们压缩的话,是一种很好的解决方式
社区常用的压缩:
1> 有损的压缩
2> 无损的压缩
1、在无损的压缩情况下,原始的数据指的是没有压缩前的数据,跟压缩后再解压是完全一样的,没有数据丢失,也不允许数据丢失
2、压缩的过程中,冗余的数据会被移走,但是会对移走的数据做标记,在解压的时候,确保这些数据移回来
压缩前和压缩后,解压前和解压后你的数据是完全对等的,不允许出现误差
对于这种无损的压缩,在使用过程中我们是不能接受它的处理过程当中有任何的数据丢失,比如说一些法律的文档和医药的文档
重要的东西,不允许有压缩的东西丢失我们就可以用这种无损的压缩
有损的压缩,我们可以用来压缩这些东西,图片、音乐、凭我们的肉眼我们是不能区分出来有什么变化的(丢失的一些数据我们是就可以接受的,也就是允许丢失部分数据的压缩格式)
数据压缩也是一个权衡的过程,也不是说任何数据压缩都是有好处的,
压缩数据的确可以提高IO的执行速度,
对于查询、insert等操作来说,压缩的确会使得数据提高
压缩数据的确可以减少磁盘空间,提高数据网络传输的速度
但是可以减少网络开销等等
另一方面,压缩过后的数据,对于CPU的利用是要增加的
换言之,就是利用CPU使用率的提高换取查询速度的提高(前提:集群中CPU够用、有剩余)
|