`
gaojingsong
  • 浏览: 1210631 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

JAVA代码之Snappy 压缩

阅读更多

Snappy is a compression/decompression library. It does not aim for maximum compression, or compatibility with any other compression library; instead, it aims for very high speeds and reasonable compression. For instance, compared to the fastest mode of zlib, Snappy is an order of magnitude faster for most inputs, but the resulting compressed files are anywhere from 20% to 100% bigger. On a single core of a Core i7 processor in 64-bit mode, Snappy compresses at about 250 MB/sec or more and decompresses at about 500 MB/sec or more.

 

Snappy is widely used inside Google, in everything from BigTable and MapReduce to our internal RPC systems. (Snappy has previously been referred to as “Zippy” in some presentations and the likes.)

 

Snappy 是Google的一个 C++ 的用来压缩和解压缩的开发包。其目标不是最大限度压缩或者兼容其他压缩格式,而是旨在提供高速压缩速度和合理的压缩率。Snappy 比 zlib 更快,但文件相对要大 20% 到 100%。在 64位模式的 Core i7 处理器上,可达每秒 250~500兆的压缩速度。

 

snappy 的前身是Zippy。虽然只是一个数据压缩库,它却被Google用于许多内部项目程,其中就包括BigTable,MapReduce和RPC。Google宣称它在这个库本身及其算法做了数据处理速度上的优化,作为代价,并没有考虑输出大小以及和其他类似工具的兼容性问题。Snappy特地为64位x86处理器做了优化,在单个Intel Core i7处理器内核上能够达到至少每秒250MB的压缩速率和每秒500MB的解压速率。

 

Google极力赞扬Snappy的各种优点,Snappy从一开始就被“设计为即便遇到损坏或者恶意的输入文件都不会崩溃”,而且被Google在生产环境中用于压缩PB级的数据。其健壮性和稳定程度可见一斑。



 

 

核心代码:

package cn.com.kafkademo.kafkademo;

 

import java.io.IOException;

 

import org.xerial.snappy.Snappy;

 

public class SnappyDemo {

 

/**

* @param args

*/

public static void main(String[] args) {

 

}

 

public static byte[] compressHtml(String html) {

try {

return Snappy.compress(html.getBytes("UTF-8"));

} catch (IOException e) {

e.printStackTrace();

return null;

}

}

 

public static String decompressHtml(byte[] bytes) {

try {

return new String(Snappy.uncompress(bytes));

} catch (IOException e) {

e.printStackTrace();

return null;

}

}

}

 

本质是使用JNI技术调用C++程序



 

 

 

 

  • 大小: 96.7 KB
  • 大小: 101.3 KB
  • 大小: 101.9 KB
0
0
分享到:
评论

相关推荐

    支持snappy压缩的hadoop2.7.2

    例如,在Java代码中,可以通过以下方式指定输出文件的压缩格式: ```java job.setOutputFormatClass(SequenceFileOutputFormat.class); Configuration conf = job.getConfiguration(); conf.set("mapreduce.output....

    Hbase设置Snappy压缩测试

    标题中的“Hbase设置Snappy压缩测试”表明我们要探讨的是如何在HBase中配置Snappy压缩,这是一种常见的数据压缩技术,常用于提升大数据存储和处理的效率。Snappy以其较高的解压速度和较低的压缩率著称,尤其适用于...

    11Snappy-压缩工具-windows

    总的来说,安装和配置Snappy压缩工具对于在Windows环境中搭建Caffe深度学习框架是必要的步骤之一,它有助于提高数据处理速度,优化内存占用,使得Caffe能够更高效地运行大规模的机器学习任务。正确安装和设置这些...

    hadoop-snappy的java包

    在描述中提到的“hadoop-snappy的java包”是指一个特别编译的Hadoop模块,它包含了对Snappy压缩算法的支持。这个包的出现解决了用户自行编译的困扰,提供了现成的可使用的库文件。"hadoop-snappy-0.0.1-lib"是这个...

    hadoop3.x带snappy(可用于windows本地开发)

    【标题】"hadoop3.x带snappy(可用于windows本地开发)"所涉及的知识点主要集中在Hadoop 3.0版本以及Snappy压缩算法在Windows环境下的应用。Hadoop是一个开源的大数据处理框架,由Apache软件基金会开发,它使得在...

    google snappy 压缩算法 源码dll 及delphi例子

    你将需要了解如何在Delphi代码中导入和使用DLL,以及如何调用Snappy的压缩和解压缩函数。通过分析提供的Delphi示例,你可以学习如何在实际项目中集成Snappy,从而提高数据处理的速度。 总的来说,Google Snappy是一...

    snappy-java-1.1.2.6.zip

    在Java环境中,`snappy-java`是Snappy的Java实现,它为Java开发者提供了使用Snappy压缩和解压缩数据的能力。`snappy-java-1.1.2.6.zip`是一个包含源代码和构建文件的压缩包,版本号为1.1.2.6,这个版本可能是对早期...

    Snappy压缩库

    Snappy压缩库是一款高效、快速的压缩和解压缩库,主要设计用于提高大数据处理的性能。它是由Google开发的,最初是为了加速Hadoop和其他大数据处理框架而设计的。Snappy的特点在于其对速度的追求,牺牲了部分压缩比,...

    将 Snappy、LZO、LZ4 和 Zstandard 移植到Java_代码_下载

    该库包含 用纯 Java 编写的LZ4、 Zstandard (Zstd)、 Snappy和 LZO的实现。它们通常比本地库的 JNI 包装器快 10-40%。 Hadoop 压缩编解码器 除了原始块编码器之外,每个算法都有 Hadoop CompressionCodec 的实现。...

    JAVA文件压缩与解压缩实践(源代码+论文).rar

    8. **第三方库**:除了Java内置的压缩库,还有许多第三方库如Apache Commons Compress和Google's Snappy,它们提供了更丰富的功能和更高的性能,适用于更复杂的压缩需求。 通过深入研究这个实践项目,开发者不仅...

    snappy代码包

    在这个压缩包文件中,我们分别找到了C、C++、Python和Java接口的实现代码,这使得在多种编程语言环境中都能方便地使用Snappy。 首先,让我们深入了解一下Snappy的核心特性: 1. **速度优先**:Snappy的主要目标是...

    hadoop-snappy-0.0.1-SNAPSHOT.tar.gz

    《Hadoop与Snappy压缩:深入理解与应用》 在大数据处理领域,Hadoop作为开源分布式计算框架,扮演着至关重要的角色。为了提高数据存储和处理的效率,Hadoop支持多种压缩算法,其中Snappy是一种广泛应用的高效压缩库...

    java笔试题算法-snappy:Snappy到Java的端口

    java笔试题算法Java 中的 Snappy 这是对纯 Java 编写的重写(移植)。 此压缩代码生成原始 C++ 代码创建的输出的逐字节精确副本,并且速度非常快。...在压缩代码方面,Java 7 始终比 Java 6 快 5-10%。 与所有基准测试

    snappy-1.1.9.tar.gz

    总之,"snappy-1.1.9.tar.gz"是一个包含了Snappy压缩库源代码的文件,通过tar和gzip进行压缩。用户可以下载并解压后,根据自己的需求在项目中集成Snappy,利用其高速度的优势优化数据处理流程。

    hadoop2.5.0 snappy编译jar包

    在Hadoop 2.5.0版本中,引入了对Snappy压缩算法的支持,以提升数据读写速度。Snappy是一款快速的、无损的数据压缩库,主要设计目标是提供高吞吐量而不是最小化压缩后的文件大小。这里我们将深入讨论Hadoop与Snappy的...

    hadoop-snappy的jar包

    Hadoop是一个分布式计算框架,广泛应用...总的来说,hadoop-snappy的jar包为Hadoop用户提供了方便,使得他们能够直接利用Snappy压缩技术,而无需自行编译源代码。这对于优化大数据处理流程和提升系统性能具有重要意义。

    Java用GZIP压缩解压文件.rar

    对于这些场景,可能需要考虑其他压缩库,如Apache Commons Compress或Google的Snappy。 总结,Java通过`java.util.zip`包提供的GZIPOutputStream和GZIPInputStream类,使得开发者能够方便地对文件进行GZIP压缩和解...

    hadoop 2.6 native snappy

    当Hadoop与Native库结合使用时,特别是在处理Snappy压缩格式的数据时,可以实现更高效的压缩和解压缩操作,降低CPU负载,提高整体系统性能。 在Hadoop 2.6版本中,集成Native Snappy需要进行编译,这个过程可能比较...

    通过Java测试几种压缩算法的性能(附测试代码下载)

    在本文中,我们将探讨如何通过Java来测试不同的压缩算法,并分析它们的性能。实验中涉及了JDK内置的GZIP和Deflate算法,以及LZ4和Snappy这两种高效的第三方压缩算法。这些测试对于理解不同压缩算法在实际应用中的...

    基于java的用GZIP压缩解压文件.zip

    12. **代码示例**:通常,Java代码会包括以下步骤: ```java try (FileOutputStream fos = new FileOutputStream("compressed.gz"); GZIPOutputStream gos = new GZIPOutputStream(fos)) { gos.write(data); // ...

Global site tag (gtag.js) - Google Analytics