Todos os produtos
Search
Central de documentação

Simple Log Service:Descompactar arquivos Snappy

Última atualização: Aug 26, 2026

Ao enviar dados do Simple Log Service para o Object Storage Service (OSS), você pode usar o Snappy para compactá-los. Após o envio, descompacte os arquivos no OSS com bibliotecas C++, Java, Python ou ferramentas Linux.

Biblioteca Snappy para C++

  1. Baixe e instale o Snappy para C++.

  2. Chame snappy.uncompress para descompactar os arquivos.

Biblioteca Snappy para Java

  1. Baixe a biblioteca Snappy para Java.

    Nota

    A versão 1.1.2.1 pode falhar ao descompactar alguns arquivos devido ao tratamento incorreto do MAGIC HEADER. Use a versão 1.1.2.6 ou posterior.

    • Baixe a biblioteca manualmente:

      xerial snappy-java

    • Adicione a seguinte dependência a um projeto 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. Descompacte os arquivos com um dos métodos a seguir.

    Nota

    O SnappyFramedInputStream não é compatível.

    • Snappy.uncompress

      Exemplo de código:

      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

      Exemplo de código:

      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. Baixe e instale o python-snappy.

  2. Chame snappy.uncompress para descompactar os arquivos.

    • Exemplo de código para Python 2:

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

      import snappy
      compressed = open('/tmp/temp.snappy','rb').read()
      print(snappy.uncompress(compressed).decode(encoding='utf-8',errors="ignore"))
    Nota
    • No Windows, a descompactação pode falhar com UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: illegal multibyte sequence devido à codificação BOM (byte order mark). Use um sistema semelhante ao UNIX ou especifique uma codificação válida na função open.

    • A ferramenta de linha de comando a seguir não oferece suporte à descompactação de arquivos comprimidos com Snappy. No modo CLI, apenas hadoop_stream_decompress e stream_decompress são compatíveis.

      python -m snappy -d compressed_file.snappy uncompressed_file                            

Ferramenta Snappy open source para PHP

Use a extensão php-ext-snappy para descompactar arquivos Snappy.

  1. Baixe o source em php-ext-snappy.

    Como alternativa, clone o repositório:

    git clone --recursive --depth=1 https://github.com/kjdev/php-ext-snappy.git
  2. Compile o source.

    % cd php-ext-snappy
    % phpize
    % ./configure
    % make
    % make install
  3. Adicione a extensão ao arquivo php.ini.

    extension=snappy.so

    Após a configuração, compacte e descompacte arquivos Snappy. Exemplo de código:

    $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;
    }

Referências

Consulte mais recursos sobre o Snappy em google/snappy.