全部产品
Search
文档中心

:Alat dekompresi untuk file yang dikompresi dengan Snappy

更新时间:Jun 26, 2025

Saat mengirim data dari Simple Log Service ke Object Storage Service (OSS), Anda dapat menggunakan Snappy untuk mengompres data tersebut. Setelah data dikirim ke OSS, Anda dapat menggunakan alat dekompresi untuk mendekompresnya. Alat ini mencakup pustaka Snappy untuk C++, Java, Python, serta alat Snappy berbasis Linux.

Penting

Versi lama pengiriman log ke OSS sudah tidak digunakan lagi. Lihat versi baru.

Pustaka Snappy untuk C++

  1. Unduh dan instal pustaka Snappy untuk C++ dari Snappy.

  2. Gunakan metode snappy.uncompress untuk mendekompres file yang dikompresi dengan Snappy.

Pustaka Snappy untuk Java

  1. Pilih salah satu metode berikut untuk mengunduh pustaka Snappy untuk Java.

    Catatan

    Jika Anda menggunakan pustaka versi 1.1.2.1, beberapa file yang dikompresi dengan Snappy mungkin gagal didekompresi. Untuk mencegah masalah ini, disarankan menggunakan pustaka versi 1.1.2.6 atau yang lebih baru. Informasi lebih lanjut tentang masalah ini dapat ditemukan di penanganan buruk dari MAGIC HEADER.

    • Klik tautan berikut untuk mengunduh pustaka secara manual:

      xerial snappy-java

    • Tambahkan dependensi berikut ke proyek Maven untuk mengunduh pustaka:

      <dependency>
      <groupId>org.xerial.snappy</groupId>
      <artifactId>snappy-java</artifactId>
      <version>1.0.4.1</version>
      <type>jar</type>
      <scope>compile</scope>
      </dependency>
  2. Pilih salah satu metode berikut untuk mendekompres file yang dikompresi dengan Snappy.

    Catatan

    SnappyFramedInputStream tidak didukung.

    • Snappy.uncompress

      Contoh kode:

      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

      Contoh kode:

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

Pustaka Snappy untuk Python

  1. Unduh dan instal pustaka Snappy untuk Python dari python-snappy.

  2. Gunakan metode snappy.uncompress untuk mendekompres file yang dikompresi dengan Snappy.

    • Contoh kode untuk Python 2:

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

      import snappy
      compressed = open('/tmp/temp.snappy','rb').read()
      print(snappy.uncompress(compressed).decode(encoding='utf-8',errors="ignore"))
    Catatan
    • Jika Anda menggunakan metode snappy.uncompress untuk mendekompres file dalam sistem Windows, kesalahan mungkin terjadi. Misalnya, kesalahan UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: illegal multibyte sequence dapat terjadi karena file dalam sistem file Windows dimulai dengan byte order mark (BOM). Disarankan menggunakan sistem seperti UNIX atau menentukan format penyandian yang valid dalam parameter encoding fungsi open.

    • Perintah berikut tidak dapat digunakan untuk mendekompres file OSS yang dikompresi dengan Snappy. Jika Anda ingin mendekompres data menggunakan CLI, gunakan mode Hadoop (hadoop_stream_decompress) atau mode streaming (stream_decompress).

      python -m snappy -d compressed_file.snappy uncompressed_file                            

Alat Snappy sumber terbuka untuk PHP

Anda dapat menggunakan alat Snappy sumber terbuka untuk PHP untuk mendekompres file yang dikompresi dengan Snappy.

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

    Anda juga dapat menjalankan perintah berikut untuk mengunduh kode sumber:

    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. Konfigurasikan ekstensi di file php.ini.

    extension=snappy.so

    Setelah konfigurasi, Anda dapat mengompres file menggunakan Snappy dan mendekompres file yang dikompresi dengan Snappy berdasarkan kode berikut:

    $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

Untuk dukungan lebih lanjut, lihat proyek sumber terbuka terkait Snappy di GitHub. Informasi lebih lanjut tersedia di snappy.