Как распаковать файл snappy (имел oop форматированный файл), используя Scala - PullRequest
0 голосов
/ 07 января 2020

Исходя из моего предыдущего вопроса, у меня был сжатый файл snappy в формате oop, и я хочу распаковать и записать содержимое в файл csv, как это делает инструмент snzip это, snzip -d /Path/to/file.snappy. Я обнаружил, что snappy- java не поддерживает распаковку такого формата. Поэтому я решил использовать org.apache.hadoop.io.compress.SnappyCodec из общего пакета oop. Но я не могу найти ни одного примера того, как это сделать. Вот что я пробовал:

object test extends App {
    val input: Array[Byte] = Files.readAllBytes(Paths.get("/Path/to/file.snappy"))
    val s: SnappyDecompressor = new SnappyDecompressor()
    val dec = s.decompress(input, 0, input.length)
    println(dec)

, но это дает мне следующий вывод:

20/01/07 12:59:57 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
0

Бонусный вопрос: как сжать данный файл .csv?

1 Ответ

0 голосов
/ 07 января 2020

Вы забыли использовать setInput (см. документацию ). Должно работать что-то вроде следующего:

object test extends App {
    val input: Array[Byte] = Files.readAllBytes(Paths.get("/Path/to/file.snappy"))
    val s: SnappyDecompressor = new SnappyDecompressor()
    s.setInput(input, 0, input.length)
    var decompressed = new Array[Byte](10*1024)
    decompressor.decompress(decompressed, 0, decompressed.length)
    println(new String(decompressed, StandardCharsets.UTF_8))
}
...