Todos los productos
Search
Centro de documentos

Simple Log Service:Descompresión de archivos Snappy

Última actualización: Sep 02, 2026

Al transferir datos de Simple Log Service a Object Storage Service (OSS), puede utilizar Snappy para comprimirlos. Una vez completada la transferencia, es posible descomprimir los archivos en OSS mediante bibliotecas de C++, Java o Python, así como con herramientas de Linux.

Biblioteca Snappy para C++

  1. Descargue e instale Snappy para C++.

  2. Invoque snappy.uncompress para descomprimir los archivos.

Biblioteca Snappy para Java

  1. Descargue la biblioteca Snappy para Java.

    Nota

    La versión 1.1.2.1 podría fallar al descomprimir ciertos archivos debido a un manejo incorrecto del MAGIC HEADER. Utilice la versión 1.1.2.6 o posterior.

    • Descargue la biblioteca manualmente:

      xerial snappy-java

    • Agregue la siguiente dependencia a un proyecto Maven:

      <dependency>
      <groupId>org.xerial.snappy</groupId>
      <artifactId>snappy-java</artifactId>
      <version>1.0.4.1</version>
      <type>jar</type>
      <scope>compile</scope>
      </dependency>
  2. Descomprima los archivos mediante uno de los siguientes métodos.

    Nota

    SnappyFramedInputStream no es compatible.

    • Snappy.uncompress

      Código de ejemplo:

      String fileName = "C:\\Downloads\\36_1474212963188600684_4451886.snappy";
      RandomAccessFile randomFile = new RandomAccessFile(fileName, "r");
      int fileLength = (int) randomFile.length();
      randomFile.seek(0);
      byte[] bytes = new byte[fileLength];
      int byteread = randomFile.read(bytes);
      System.out.println(fileLength);
      System.out.println(byteread);
      byte[] uncompressed = Snappy.uncompress(bytes);
      String result = new String(uncompressed, "UTF-8");
      System.out.println(result);
    • Snappy.SnappyInputStream

      Código de ejemplo:

      String fileName = "C:\\Downloads\\36_1474212963188600684_4451886.snappy";
      SnappyInputStream sis = new SnappyInputStream(new FileInputStream(fileName));
      byte[] buffer = new byte[4096];
      int len = 0;
      while ((len = sis.read(buffer)) != -1) {
          System.out.println(new String(buffer, 0, len));
      }

Biblioteca Snappy para Python

  1. Descargue e instale python-snappy.

  2. Invoque snappy.uncompress para descomprimir los archivos.

    • Código de ejemplo para Python 2:

      import snappy
      compressed = open('/tmp/temp.snappy').read()
      snappy.uncompress(compressed)
    • Código de ejemplo para Python 3:

      import snappy
      compressed = open('/tmp/temp.snappy','rb').read()
      print(snappy.uncompress(compressed).decode(encoding='utf-8',errors="ignore"))
    Nota
    • En Windows, la descompresión puede fallar con el error UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: illegal multibyte sequence debido a la codificación de marca de orden de bytes (BOM). Utilice un sistema tipo UNIX o especifique una codificación válida en la función open.

    • La siguiente herramienta de línea de comandos no admite la descompresión de archivos comprimidos con Snappy. En modo CLI, solo se admiten hadoop_stream_decompress y stream_decompress.

      python -m snappy -d compressed_file.snappy uncompressed_file                            

Herramienta Snappy de código abierto para PHP

Utilice la extensión php-ext-snappy para descomprimir archivos Snappy.

  1. Descargue el código fuente desde php-ext-snappy.

    Como alternativa, clone el repositorio:

    git clone --recursive --depth=1 https://github.com/kjdev/php-ext-snappy.git
  2. Compile el código fuente.

    % cd php-ext-snappy
    % phpize
    % ./configure
    % make
    % make install
  3. Agregue la extensión al archivo php.ini.

    extension=snappy.so

    Una vez completada la configuración, podrá comprimir y descomprimir archivos Snappy. Código de ejemplo:

    $file_path = "test.snappy" ;
    if (file_exists($file_path)) {
      $str = file_get_contents($file_path); // Read the content of the file into a string. 
      $uncompressed = snappy_uncompress($str);
      echo $uncompressed;
    }

Referencias

Encontrará más recursos sobre Snappy en google/snappy.