All Products
Search
Document Center

Simple Log Service:Dekompresi file Snappy

Last Updated:Aug 27, 2026

Saat mengirimkan data dari Simple Log Service ke Object Storage Service (OSS), Anda dapat menggunakan Snappy untuk mengompres data tersebut. Setelah pengiriman selesai, file OSS dapat didekompresi menggunakan library C++, library Java, library Python, atau tool Linux.

Library Snappy untuk C++

  1. Unduh dan instal Snappy untuk C++.

  2. Panggil snappy.uncompress untuk mendekompresi file.

Library Snappy untuk Java

  1. Unduh library Snappy untuk Java.

    Catatan

    Versi 1.1.2.1 mungkin gagal mendekompresi beberapa file karena penanganan MAGIC HEADER yang buruk. Gunakan versi 1.1.2.6 atau yang lebih baru.

    • Unduh library secara manual:

      xerial snappy-java

    • Tambahkan dependensi berikut ke proyek 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. Dekompresi file dengan menggunakan salah satu metode berikut.

    Catatan

    SnappyFramedInputStream tidak didukung.

    • Snappy.uncompress

      Kode contoh:

      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

      Kode contoh:

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

Library Snappy untuk Python

  1. Unduh dan instal python-snappy.

  2. Panggil snappy.uncompress untuk mendekompresi file.

    • Kode contoh untuk Python 2:

      import snappy
      compressed = open('/tmp/temp.snappy').read()
      snappy.uncompress(compressed)
    • Kode contoh untuk Python 3:

      import snappy
      compressed = open('/tmp/temp.snappy','rb').read()
      print(snappy.uncompress(compressed).decode(encoding='utf-8',errors="ignore"))
    Catatan
    • Pada Windows, dekompresi mungkin gagal dengan UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: illegal multibyte sequence karena encoding byte order mark (BOM). Gunakan sistem bergaya UNIX atau tentukan encoding yang valid dalam fungsi open.

    • Tool baris perintah berikut tidak mendukung dekompresi file terkompresi Snappy. Dalam mode CLI, hanya hadoop_stream_decompress dan stream_decompress yang didukung.

      python -m snappy -d compressed_file.snappy uncompressed_file                            

Tool Snappy open source untuk PHP

Gunakan ekstensi php-ext-snappy untuk mendekompresi file Snappy.

  1. Unduh kode sumber dari php-ext-snappy.

    Atau, klon repositori:

    git clone --recursive --depth=1 https://github.com/kjdev/php-ext-snappy.git
  2. Kompilasi kode sumber.

    % cd php-ext-snappy
    % phpize
    % ./configure
    % make
    % make install
  3. Tambahkan ekstensi ke php.ini.

    extension=snappy.so

    Setelah konfigurasi selesai, Anda dapat mengompres dan mendekompresi file Snappy. Kode contoh:

    $file_path = "test.snappy" ;
    if (file_exists($file_path)) {
      $str = file_get_contents($file_path); // Baca isi file ke dalam string. 
      $uncompressed = snappy_uncompress($str);
      echo $uncompressed;
    }

Referensi

Lebih banyak sumber daya Snappy tersedia di google/snappy.