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++
Unduh dan instal Snappy untuk C++.
Panggil
snappy.uncompressuntuk mendekompresi file.
Library Snappy untuk Java
Unduh library Snappy untuk Java.
CatatanVersi 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:
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>
Dekompresi file dengan menggunakan salah satu metode berikut.
CatatanSnappyFramedInputStream tidak didukung.
Snappy.uncompressKode 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.SnappyInputStreamKode 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
Unduh dan instal python-snappy.
Panggil
snappy.uncompressuntuk 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"))
CatatanPada Windows, dekompresi mungkin gagal dengan
UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: illegal multibyte sequencekarena 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_decompressdanstream_decompressyang 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.
Unduh kode sumber dari php-ext-snappy.
Atau, klon repositori:
git clone --recursive --depth=1 https://github.com/kjdev/php-ext-snappy.gitKompilasi kode sumber.
% cd php-ext-snappy % phpize % ./configure % make % make installTambahkan ekstensi ke php.ini.
extension=snappy.soSetelah 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.