精华内容
下载资源
问答
  • 多种矢量数据压缩方法

    千次阅读 2009-05-19 23:32:00
    矢量数据压缩算法是比较常用的一个GIS数据处理方法,对于此,本程序提供了常见的道格拉斯算法,光栏法,垂距法等压缩算法。编译环境:VS2005 C#运行环境要求:.NET FrameWork 2.0数据来源:一段公开的格网数据更多...

    矢量数据压缩算法是比较常用的一个GIS数据处理方法,对于此,本程序提供了常见的道格拉斯算法,光栏法,垂距法等压缩算法。

    编译环境:VS2005 C#

    运行环境要求:.NET FrameWork 2.0

    数据来源:一段公开的格网数据

    更多有偿技术支持:请联系作者:GISExpert,邮箱号:gisexpert@sina.com

    展开全文
  • HDFS支持数据压缩的几种方法探讨

    千次阅读 2014-07-12 10:55:41
    HDFS支持数据压缩存在以下几种方法: 1、在HDFS之上将数据压缩好后,再存储到HDFS 2、在HDFS内部支持数据压缩,这里又可以分为几种方法:  2.1、压缩工作在DataNode上完成,这里又分两种方法:  2.1.1、数据...
    HDFS支持数据压缩存在以下几种方法:

    1、在HDFS之上将数据压缩好后,再存储到HDFS
    2、在HDFS内部支持数据压缩,这里又可以分为几种方法:
        2.1、压缩工作在DataNode上完成,这里又分两种方法:
               2.1.1、数据接收完后,再压缩
                         这个方法对HDFS的改动最小,但效果最低,只需要在block文件close后,调用压缩工具,将block文件压缩一下,然后再打开block文件时解压一下即可,几行代码就可以搞定
               2.1.2、边接收数据边压缩,使用第三方提供的压缩库
                         效率和复杂度折中方法,Hook住系统的write和read操作,在数据写入磁盘之前,先压缩一下,但write和read对外的接口行为不变,比如:原始大小为100KB的数据,压缩后大小为10KB,当写入100KB后,仍对调用者返回100KB,而不是10KB
        2.2、压缩工作交给DFSClient做,DataNode只接收和存储
               这个方法效果最高,压缩分散地推给了HDFS客户端,但DataNode需要知道什么时候一个block块接收完成了。

    推荐最终实现采用2.2这个方法,该方法需要修改的HDFS代码量也不大,但效果最高。


    这里举一个例子:
     先说文件的压缩有两大好处:1、可以减少存储文件所需要的磁盘空间;2、可以加速数据在网络和磁盘上的传输。尤其是在处理大数据时,这两大好处是相当重要的。

      下面是一个使用gzip工具压缩文件的例子。将文件/user/hadoop/aa.txt进行压缩,压缩后为/user/hadoop/text.gz

    1. package com.hdfs;

    2. import java.io.IOException;
    3. import java.io.InputStream;
    4. import java.io.OutputStream;
    5. import java.net.URI;

    6. import org.apache.hadoop.conf.Configuration;
    7. import org.apache.hadoop.fs.FSDataInputStream;
    8. import org.apache.hadoop.fs.FSDataOutputStream;
    9. import org.apache.hadoop.fs.FileSystem;
    10. import org.apache.hadoop.fs.Path;
    11. import org.apache.hadoop.io.IOUtils;
    12. import org.apache.hadoop.io.compress.CompressionCodec;
    13. import org.apache.hadoop.io.compress.CompressionCodecFactory;
    14. import org.apache.hadoop.io.compress.CompressionInputStream;
    15. import org.apache.hadoop.io.compress.CompressionOutputStream;
    16. import org.apache.hadoop.util.ReflectionUtils;

    17. public class CodecTest {
    18.     //压缩文件
    19.     public static void compress(String codecClassName) throws Exception{
    20.         Class<?> codecClass = Class.forName(codecClassName);
    21.         Configuration conf = new Configuration();
    22.         FileSystem fs = FileSystem.get(conf);
    23.         CompressionCodec codec = (CompressionCodec)ReflectionUtils.newInstance(codecClass, conf);
    24.         //指定压缩文件路径
    25.         FSDataOutputStream outputStream = fs.create(new Path("/user/hadoop/text.gz"));
    26.         //指定要被压缩的文件路径
    27.         FSDataInputStream in = fs.open(new Path("/user/hadoop/aa.txt"));
    28.         //创建压缩输出流
    29.         CompressionOutputStream out = codec.createOutputStream(outputStream);  
    30.         IOUtils.copyBytes(in, out, conf);
    31.         IOUtils.closeStream(in);
    32.         IOUtils.closeStream(out);
    33.     }
    34.    
    35.     //解压缩
    36.     public static void uncompress(String fileName) throws Exception{
    37.         Class<?> codecClass = Class.forName("org.apache.hadoop.io.compress.GzipCodec");
    38.         Configuration conf = new Configuration();
    39.         FileSystem fs = FileSystem.get(conf);
    40.         CompressionCodec codec = (CompressionCodec)ReflectionUtils.newInstance(codecClass, conf);
    41.         FSDataInputStream inputStream = fs.open(new Path("/user/hadoop/text.gz"));
    42.          //把text文件里到数据解压,然后输出到控制台  
    43.         InputStream in = codec.createInputStream(inputStream);  
    44.         IOUtils.copyBytes(in, System.out, conf);
    45.         IOUtils.closeStream(in);
    46.     }
    47.    
    48.     //使用文件扩展名来推断二来的codec来对文件进行解压缩
    49.     public static void uncompress1(String uri) throws IOException{
    50.         Configuration conf = new Configuration();
    51.         FileSystem fs = FileSystem.get(URI.create(uri), conf);
    52.         
    53.         Path inputPath = new Path(uri);
    54.         CompressionCodecFactory factory = new CompressionCodecFactory(conf);
    55.         CompressionCodec codec = factory.getCodec(inputPath);
    56.         if(codec == null){
    57.             System.out.println("no codec found for " + uri);
    58.             System.exit(1);
    59.         }
    60.         String outputUri = CompressionCodecFactory.removeSuffix(uri, codec.getDefaultExtension());
    61.         InputStream in = null;
    62.         OutputStream out = null;
    63.         try {
    64.             in = codec.createInputStream(fs.open(inputPath));
    65.             out = fs.create(new Path(outputUri));
    66.             IOUtils.copyBytes(in, out, conf);
    67.         } finally{
    68.             IOUtils.closeStream(out);
    69.             IOUtils.closeStream(in);
    70.         }
    71.     }
    72.    
    73.     public static void main(String[] args) throws Exception {
    74.         //compress("org.apache.hadoop.io.compress.GzipCodec");
    75.         //uncompress("text");
    76.         uncompress1("hdfs://master:9000/user/hadoop/text.gz");
    77.     }

    78. }
    复制代码
    首先执行77行进行压缩,压缩后执行第78行进行解压缩,这里解压到标准输出,所以执行78行会再控制台看到文件/user/hadoop/aa.txt的内容。如果执行79行的话会将文件解压到/user/hadoop/text,他是根据/user/hadoop/text.gz的扩展名判断使用哪个解压工具进行解压的。解压后的路径就是去掉扩展名。

      进行文件压缩后,在执行命令./hadoop fs -ls /user/hadoop/查看文件信息,如下:
    1. [hadoop@master bin]$ ./hadoop fs -ls /user/hadoop/
    2. Found 7 items
    3. -rw-r--r--   3 hadoop supergroup   76805248 2013-06-17 23:55 /user/hadoop/aa.mp4
    4. -rw-r--r--   3 hadoop supergroup        520 2013-06-17 22:29 /user/hadoop/aa.txt
    5. drwxr-xr-x   - hadoop supergroup          0 2013-06-16 17:19 /user/hadoop/input
    6. drwxr-xr-x   - hadoop supergroup          0 2013-06-16 19:32 /user/hadoop/output
    7. drwxr-xr-x   - hadoop supergroup          0 2013-06-18 17:08 /user/hadoop/test
    8. drwxr-xr-x   - hadoop supergroup          0 2013-06-18 19:45 /user/hadoop/test1
    9. -rw-r--r--   3 hadoop supergroup         46 2013-06-19 20:09 /user/hadoop/text.gz

    展开全文
  • 浅析数据压缩算法

    千次阅读 2017-05-17 15:51:17
    数据压缩是减少信息传输量最经济直接的办法,所以这篇文章将讲解一些经典的数据压缩算法。 一 热身:基因组 对于生物学的基因研究中,A、C、T、G是是用来表示生物DNA的四种碱基,对基因序列的处理实际上是对这四种...

    数据压缩是减少信息传输量最经济直接的办法,所以这篇文章将讲解一些经典的数据压缩算法。

    一 热身:基因组

    对于生物学的基因研究中,A、C、T、G是是用来表示生物DNA的四种碱基,对基因序列的处理实际上是对这四种碱基的处理,因此为了解决这种字符种类较少且固定的字符序列,我们可以用双位编码(用2bit位可以表示四中字符)压缩来解决这个问题。在这种方法中,只需要建立字母表即可对字符序列进行压缩和展开。

    例如有以下DNA序列:ATAGAGCATA,我们可以建立以下字母表:

    A 00
    C 01
    T 10
    G 11

    对应的压缩编码如下:00100011001101001000

    二 游程编码(RLE)

    游程编码是一种无损压缩编码,JPEG图片压缩就用此方法。比特流中最简单的冗余相识就是一长串重复的比特,我们可以利用游程编码来压缩冗余数据。例如下面这条40位长的字符串:

    0000000000000001111111000000011111111111

    该字符串含有15个0,7个1,7个0以及11个1,因此我们将该字符压缩为15,7,7,1。所有字符串都是有交替出现的01组成的,因此我们是需要将游程的长度编码即可。在这个例子中用4位表示长度,那么就可以得到一个16位长的字符串(15=1111,7=0111,7=0111,1=0001):

    1111011101110001

    压缩率为16/40=40%。

    对于游程编码,我们有以下约定:

    1 游程长度应在0-255之间,用8位编码

    2 在需要的情况下使用长度为0的游程来保证所有游程长度不超过256

    3 对于较短的游程也会编码,但这样有可能是输入变长

    该方法并不适合含有大量短游程的输入,只有在游程长度大于将他们用二进制表示所需的长度时才能节省空间。


    三 霍夫曼压缩

    哈夫曼编码是无损压缩当中最好的方法。它使用预先二进制描述来替换每个符号,长度由特殊符号出现的频率决定。常见的符号需要很少的位来表示,而不常见的符号需要很多位来表示。哈夫曼算法在改变任何符号二进制编码引起少量密集表现方面是最佳的。然而,它并不处理符号的顺序和重复或序号的序列。

    图 2.2 显示了一个 10 个字节的未压缩的数据。根据符号频率,哈夫曼编码器生成哈夫曼树(图 2.4 )和相应的编码表示(图 2.3 )。

    压缩后的数据流是 24 位(三个字节),原来是 80 位( 10 个字节)。当然,我应该存储霍夫曼树,这样解码器就能够解码出对应的压缩流了,这就使得该例子中的真正数据流比输入的流数据量大。这是相对较短的数据上的副作用。对于大数据量来说,上面的哈夫曼树就不占太多比例了。

    四 LZW压缩

    LZW压缩是一种无损压缩,应用于gif图片。适用于数据中存在大量重固子串的情况。

    1 原理

    LZW算法中,首先建立一个字符串表,把每一个第一次出现的字符串放入串表中,并用一个数字来表示,这个数字与此字符串在串表中的位置有关,并将这个数字存入压缩文件中,如果这个字符串再次出现时,即可用表示它的数字来代替,并将这个数字存入文件中。压缩完成后将串表丢弃。如"print" 字符串,如果在压缩时用266表示,只要再次出现,均用266表示,并将"print"字符串存入串表中,在图象解码时遇到数字266,即可从串表中查出266所代表的字符串"print",在解压缩时,串表可以根据压缩数据重新生成。

    该算法最令人惊讶的特性在于,和霍夫曼编码不同,输出中并不需要附上这张串表,而霍夫曼编码要将霍夫曼树存储在输出中,在解码中使用。

    2 适用范围

    举个例子,原来的数值范围可以用8bit来表示,那么就认为原始的数的范围是0~255,压缩程序生成的标号的范围就不能为0~255(如果是0-255,就重复了)。只能从256开始,但是这样一来就超过了8位的表示范围了,所以必须要扩展数据的位数,至少扩展一位,但是这样不是增加了1个字符占用的空间了么?但是却可以用一个字符代表几个字符,比如原来255是8bit,但是现在用256来表示254,255两个数,还是划得来的。从这个原理可以看出LZW算法的适用范围是原始数据串最好是有大量的子串多次重复出现,重复的越多,压缩效果越好。反之则越差,可能真的不减反增了

    假设需要读取一列由7位ASC码编码的字符串ABRACADABRABRABRA,则需要扩展一位,用8位来表示。为了简单起见用十六进制来表示,这样A的编码为41等等。我们将80(10000000)作为结束标志,将其余编码值(81-FF)作为标号。

    编码过程:

    前缀 后缀 Entry(前缀+后缀) 是否存在 输出 Entry标号
      A (,A)      
    A B (A,B) N 41(A) 81
    B R (B,R) N 42(B) 82
    R A (R,A) N 52(R) 83
    A C (A,C) N 41(A) 84
    C A (C,A) N 43(C) 85
    A D (A,D) N 41(A) 86
    D A (D,A) N 44(D) 87
    A B (A,B) Y    
    AB R (AB,R) N 81(AB) 88
    R A (R,A) Y    
    RA B (RA,B) N 83(RA) 89
    B R (B,R) Y    
    BR A (BR,A) N 82(BR) 8A
    A B (A,B) Y    
    AB R (AB,R) Y    
    ABR A (ABR,A) N 88(ABR) 8B
    A   (A,)   41(A)  
            80(End)  

    编码后输出:41 42 52 41 43 41 44 81 83 82 88 41 80

    输入为17个7位ASC字符,总共119位,输出为13个8位编码,总共104位,压缩比为87%。

    解码过程:

    对输出的41 42 52 41 43 41 44 81 83 82 88 41 80进行解码,如下表所示

    前缀 后缀 Entry 是否存在 输出 Entry标号
    41(A) 42(B) (A,B) N A 81
    42(B) 52(R) (B,R) N B 82
    52(R) 41(A) (R,A) N R 83
    41(A) 43(C) (A,C) N A 84
    43(C) 41(A) (C,A) N R 85
    41(A) 44(D) (A,D) N A 86
    44(D) 81(AB) (D,A) N D 87
    81(AB) 83(RA) (AB,R) N AB 88
    83(RA) 82(BR) (RA,B) N RA 89
    82(BR) 88(ABR) (BR,A) N BR 8A
    88(ABR) 41(A) (ABR,A) N ABR 8B
    41(A) 80(End) (A,)   A  

    解码后输出:ABRACADABRABRABRA

    特殊标记:

    随着新的串(string)不断被发现,标号也会不断地增长,如果原数据过大,生成的标号集(string table)会越来越大,这时候操作这个集合就会产生效率问题。如何避免这个问题呢?Gif在采用lzw算法的做法是当标号集足够大的时候,就不能增大了,干脆从头开始再来,在这个位置要插入一个标号,就是清除标志CLEAR,表示从这里我重新开始构造字典,以前的所有标记作废,开始使用新的标记
    这时候又有一个问题出现,足够大是多大?这个标号集的大小为比较合适呢?理论上是标号集大小越大,则压缩比率就越高,但开销也越高。 一般根据处理速度和内存空间连个因素来选定。GIF规范规定的是12位,超过12位的表达范围就推倒重来,并且GIF为了提高压缩率,采用的是变长的字长。比如说原始数据是8位,那么一开始,先加上一位再说,开始的字长就成了9位,然后开始加标号,当标号加到512时,也就是超过9为所能表达的最大数据时,也就意味着后面的标号要用10位字长才能表示了,那么从这里开始,后面的字长就是10位了。依此类推,到了2^12也就是4096时,在这里插一个清除标志,从后面开始,从9位再来。
    GIF规定的清除标志CLEAR的数值是原始数据字长表示的最大值加1,如果原始数据字长是8,那么清除标志就是256,如果原始数据字长为4那么就是16。另外GIF还规定了一个结束标志END,它的值是清除标志CLEAR再加1。由于GIF规定的位数有1位(单色图),4位(16色)和8位(256色),而1位的情况下如果只扩展1位,只能表示4种状态,那么加上一个清除标志和结束标志就用完了,所以1位的情况下就必须扩充到3位。其它两种情况初始的字长就为5位和9位。此处参照了http://blog.csdn.net/whycadi/

    五 参考文章

    http://www.cnblogs.com/jillzhang/archive/2006/11/06/551298.html

    算法(第四版)

    展开全文
  • 数据压缩算法该如何选择?

    万次阅读 2021-05-05 13:01:33
    写在前面 本文隶属于专栏《100个问题搞定大数据理论体系》,该专栏为笔者原创,引用请注明来源,...大数据需要处理海量数据,此时数据压缩非常重要。 在企业中存在的许多场景中,通常,数据源来自多种文本格式(CSV、TS

    写在前面

    本文隶属于专栏《100个问题搞定大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

    本专栏目录结构和文献引用请见100个问题搞定大数据理论体系

    解答

    大数据领域常见的压缩格式有 gzip,snappy,lzo,lz4,bzip2,zstd。
    

    在这里插入图片描述

    补充

    为什么要进行数据压缩?

    为了优化存储(减少存储空间)和充分利用网络带宽,通常采用压缩方法。大数据需要处理海量数据,此时数据压缩非常重要。

    在企业中存在的许多场景中,通常,数据源来自多种文本格式(CSV、TSV、XML、JSON等)数据。这些文件是人类可读的,但占用了大量的存储空间。

    然而在大数据处理中数据应尽可能为机器可读。使用序列化的压缩技术将这些人类可读的数据压缩成机器可读的, 可确保存储所需的空间大大减少。

    以下是一些众所周知的常用压缩格式(称为编解码器,允许数据压缩/序列化和解压缩/反序列化)

    Gzip(扩展名为.gz)

    即 GNU Zip(GZip),一种众所周知的压缩格式,并且在互联网世界中被广泛使用。可以使用此格式压缩请求和响应,以有效利用网站/Web应用程序的带宽。

    优点

    压缩比较高,hadoop本身支持,在应用中处理gzip格式的文件就和直接处理文本一样,有hadoop native库,大部分linux系统都自带gzip命令,使用方便。

    缺点

    不支持split

    hadoop native 是什么?
    鉴于性能问题以及某些Java类库的缺失,对于某些组件,Hadoop提供了自己的本地实现。 这些组件保存在Hadoop的一个独立的动态链接的库里。这个库在Unix平台上叫libhadoop.so.

    Snappy(扩展名为.snappy)

    由 Google开发的编解码器(以前称作Zippy),被认为是中等压缩比中性能最好的。对于该格式而言,性能比压缩比更为重要。Snappy属于最为广泛使用的格式之一,显然是由于其出色的性能。

    优点

    压缩速度快;支持hadoop native库

    缺点

    不支持split;压缩比低;hadoop本身不支持,需要安装;linux系统下没有对应的命令

    LZO(扩展名为.lzo)

    由GNU公共许可证(GPL)授权,与 Snappy非常类似,它具有中等压缩比,而压缩与解压缩性能很高。LZO是一种专注于解压缩速度的无损数据压缩算法。

    优点

    压缩/解压速度也比较快,合理的压缩率;支持split,是hadoop中最流行的压缩格式;支持hadoop native库;需要在linux系统下自行安装lzop命令,使用方便

    缺点

    hadoop本身不支持,需要安装;lzo虽然支持split,但需要对lzo文件建索引,否则hadoop也是会把lzo文件看成一个普通文件(为了支持split需要建索引,需要指定InputFormat为lzo格式)。

    LZ4(扩展名.lz4)

    优点

    性能好压缩比高,首次初始化速度较好,压缩速度和稳定性也都不错

    缺点

    1. lz4的解压比较麻烦,需要指定原byte数组大小,所以开发起来工作量要大些
    2. 不支持split

    Bzip2(扩展名.bz2)

    或多或少与GZip类似,压缩比高于GZip。但如预期一样, Bzip2的数据解压缩速度比GZip慢。其中一个重要的方面是,它支持数据分割,这在使用HDFS作为存储时非常重要。如果数据只是被存储而无须查询,那么这种压缩将是一个不错的选择。

    优点:

    支持split;具有很高的压缩率,比gzip压缩率都高;hadoop本身支持,但不支持native;在linux系统下自带bzip2命令,使用方便

    缺点:

    压缩/解压速度慢;不支持native

    zstd(扩展名.zstd)

    zstd是Facebook在2016年开源的新无损压缩算法,优点是压缩率和压缩/解压缩性能都很突出。zstd还有一个特别的功能,支持以训练方式生成字典文件,相比传统压缩方式能大大的提高小数据包的压缩率。

    1. 对大数据量的文本压缩场景,zstd是综合考虑压缩率和压缩性能最优的选择,其次是lz4。
    2. 对小数据量的压缩场景,如果能使用zstd的字典方式,压缩效果更为突出。
    3. 支持split, 但是还不完善,详情可见——Is zstd splitabble in hadoop/spark/etc?

    选择

    前面的每种压缩算法都有其优点和缺点。如果压缩比比较高(压缩后节约较大空间)则解压缩速度通常很慢,反之,则解压缩速度快。

    没有两全其美的办法,只能选择一种方法来使用。这取决于进入系统的数据,必须根据具体情况来选择。

    当需要选择压缩算法时,以下选项可供参考

    1. 将文件分成若干块,然后使用适合的算法进行压缩。由于选择了 Hadoop(HDFS)作为数据持久化机制,因此需要确保这些数据块在压缩后能与预期的memory slot适配(在HDFS中配置)。
    2. 选择允许先分割、再压缩的压缩格式。
    3. 选择允许分割和压缩的容器文件格式,如Avro和Parquet。这些格式可以与其他压缩格式混合使用,以达到用户用例所要求的速度和压缩比。

    Avro 和 Parquet

    详情请见我的这两篇博客——

    1. Apache Avro是什么?
    2. Parquet是什么
    展开全文
  • hive数据压缩

    千次阅读 2015-04-17 11:15:38
    Hive使用的是Hadoop的文件系统和文件格式,比如TEXTFILE,SEQUENCEFILE... 在Hive中对中间数据或最终数据数据压缩,是提高数据吞吐量和性能的一种手段。对数据压缩,可以大量减少磁盘的存储空间,比如基于文本的
  • 解决数据压缩的问题通常可以从三步来分析:第一步是为什么要做,即数据压缩的必要性问题;第二步是为什么可以做,即分析信源数据的特性,并在此基础上进行数据压缩的可行性分析;第三步是在第二步分析的基础上,如何...
  • Hive数据压缩笔记

    万次阅读 2013-06-26 21:49:14
    本文介绍Hadoop系统中Hive数据压缩方案的比较结果及具体压缩方法。 一、压缩方案比较 关于Hadoop HDFS文件的压缩格式选择,我们通过多个真实的Track数据做测试,得出结论如下: 1. 系统的默认压缩编码方式 ...
  • HADOOP与HDFS数据压缩格式

    千次阅读 2018-10-17 18:20:11
    HADOOP与HDFS数据压缩格式 1、cloudera 数据压缩的一般准则 一般准则 是否压缩数据以及使用何种压缩格式对性能具有重要的影响。在数据压缩上,需要考虑的最重要的两个方面是 MapReduce 作业和存储在 HBase 中的...
  • 算法#19--霍夫曼压缩(数据压缩

    千次阅读 2016-09-23 11:26:45
    我们现在来学习一种能够大幅压缩自然语言文件空间(以及许多其他类型文件)的数据压缩技术:霍夫曼压缩。
  • 数据压缩算法很多,有些是无损的,有些是有损的,但是它们的主要目标都是降低存储空间和传输量。对于两个远距离节点之间的数据传输,这些压缩算法非常有用。也许最直观的例子就是web服务器和浏览器之间的数据传输...
  • 数据压缩算法综述

    千次阅读 2012-02-25 10:35:26
    《笨笨数据压缩教程》是我在1998年因工作需要研究压缩算法时写的文章(算是一 种工作笔记吧,其中难免许多疏漏),1999年初随着项目变迁,就把压缩技术的 研究暂时搁置了。从那以后,一是工作太忙,二是自己懒惰,...
  • 无损数据压缩

    千次阅读 2005-02-05 17:22:00
    数据压缩的起源要比计算机的起源早得多,数据压缩技术在计算机技术的萌芽时期就已经被提上了议事日程,军事科学家、数学家、电子学家一直在研究有关信息如何被高效存储和传递的问题。随着信息论的产生和发展,数据...
  • 数据压缩与信息熵

    千次阅读 2015-11-20 15:02:02
    前言 1992年,美国佐治亚州的WEB Technology公司,宣布做出了重大的技术突破。...事实上,一些文件是无法压缩的,哪怕一个二进制位,都压缩不掉。 那么,为何不是所有的文件都可以被压缩?是否存在一个
  • 图像数据压缩原理

    千次阅读 2012-12-11 09:19:26
    图像数据压缩原理 http://jinren1010.spaces.eepw.com.cn/articles/trackback/item/15972 由于图像数据之间存在着一定的冗余,所以使得数据的压缩成为可能。信息论的创始人Shannon提出把数据看作是信息和冗余度...
  • 数据压缩算法LZO

    千次阅读 2017-07-03 14:11:51
    LZO是致力于解压速度的一种数据压缩算法,LZO 是 Lempel-Ziv-Oberhumer 的缩写。这个算法是无损算法,参考实现程序是线程安全的。实现它的一个自由软件工具是lzop。最初的库是用 ANSI C 编写、并且遵从 GNU通用公共...
  • Python数据存储与压缩

    千次阅读 2018-12-10 16:33:14
      跑实验要用到数据集,对于一些不大的数据集,为了节省时间,时候会先预处理,然后将各个文件存储成一个大文件,一次性读入内存,省去了每个迭代重新读入和重新预处理的时间。这里讨论一些数据存储与压缩方式,...
  • 数据压缩算法—2无损压缩算法

    千次阅读 2018-12-12 20:55:43
    几个常见的编码算法 (一) 字典算法   字典算法是最为简单的...  字典列表:   00=Chinese   01=People   02=China   源文本:I am a Chinese people,I am from China 压缩后的编码为:I am a 00 0...
  • Hive 的数据压缩格式怎么选择?

    千次阅读 2021-06-20 23:57:49
    1 数据压缩说明 压缩模式评价 可使用以下三种标准对压缩方式进行评价 压缩比:压缩比越高,压缩后文件越小,所以压缩比越高越好 压缩时间:越快越好 已经压缩的格式文件是否可以再分割:可以分割的格式允许单一...
  • 第七章数据压缩技术

    千次阅读 2016-04-30 10:13:26
    第七章 数据压缩技术 转自:http://www.dataguru.cn/article-3856-1.html     本章导读 前面的章节已经介绍了海量数据的存储、查询、分区、容错等技术,这些技术对于海量数据的处理是必不可少的,但要进一步...
  • 联通的还好,但移动的速度实在太慢,客户在使用软件的过程中,由于上传的信息中可能包含多张图片,会经常出现上传图片失败的问题,为了解决这个问题,我们决定把照片压缩到100k以下,并且保证图片不失真(目前图片...
  • 常用数据无损压缩算法分析

    万次阅读 2011-02-01 11:40:00
    当今,各种信息系统的数据量越来越大,如何更快、更多、更好地传输与存储数据成为数据信息处理的首要问题,而数据压缩技术则是解决这一问题的重要方法。事实上,从压缩软件WINRAR到熟知的MP3,数据压缩技术早已应用...
  • 数据压缩简史 原帖地址:http://www.cnpaf.net/forum/viewthread.php?tid=354&extra=&page=1 但已成死链接。 可从以下位置找到:...
  • 在一些嵌入式的项目设计中,空间是相当宝贵的,因为一个CPU的存储是有限的,所以此时我们在保存数据的时候,喜欢来进行压缩保存,著名的哈夫曼树算法,专门用来做压缩的算法,当然,本节我们不讨论这些稍微高级的...
  • Hadoop中的数据压缩

    千次阅读 2016-03-16 16:12:18
    详细描述了在Hadoop中哪里,何时应该使用压缩。以及应该选择什么样的文件格式和压缩算法。
  • Hive_Hive 中的数据压缩

    千次阅读 2018-07-19 15:06:41
    ...一个是 job 最终执行结果的数据压缩,另一个方面是计算中间结果的数据压缩。   参考文章: hive 的几种存储格式 https://blog.csdn.net/jinfeiteng2008/article/details/56665804   ...
  • JPEG压缩方法由于其较高的压缩比和理想的压缩效果,是目前应用最广泛的图像压缩方法。它采用一种特殊的有损压缩算法,将不易被人眼察觉 的图像颜色删除,从而能够将图像压缩在很小的储存空间。JPEG压缩技术十分先进...
  • 实时数据库中的数据压缩技术

    千次阅读 2016-05-25 18:31:28
    实时数据库中的数据压缩技术 标签: 数据库算法磁盘网络图形工作 2009-09-21 11:22 2715人阅读 评论(0) 收藏 举报  分类:   实时数据库(4)  版权声明:本文为博主原创文章,未经博主允许不得转载...
  • 说明:以下数据针对使用动态扩充盘的XP MODE。XP MODE使用一段时间后,其VHD文件扩大得很夸张,比如说进入虚拟机后的磁盘占用为10个G(这只是我的虚拟机的例子,具体情况因虚拟机而不同),但是WIN7下看VHD文件可能...
  • 综述 许多信息资料都或多或少的包含一些多余的数据。通常会导致在客户端与服务器之间,应用程序与计算机之间极大的数据传输量。...这篇文章简要的介绍了数据压缩与解压缩,并展示了用java.util.zip包来实
  • 使用zlib库进行数据压缩、解压缩

    千次阅读 2009-11-10 14:28:00
    本文来自:...首先是其安装程序中的LZOpenFile函数,函数的作用已经了解过了,只是没有实验对象,所以还得找个,压缩好的包来测试一下,最后先找到zlib.来试试看.顺便还能学一些其中的东西

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 328,547
精华内容 131,418
关键字:

以下属于数据压缩的方法有