如何使用scala解压snappy(hadoop文件格式)文件

3xiyfsfu  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(389)

从上一个问题开始,我已经用hadoop文件格式化了snapy压缩文件,我想解压并将内容写入csv文件,就像snzip工具一样, snzip -d /Path/to/file.snappy . 我发现SnappyJava不支持解压缩这种格式。所以我决定用 org.apache.hadoop.io.compress.SnappyCodec 来自hadoop公共包。但是我找不到任何关于如何做的例子。这是我尝试过的;

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文件?

vmpqdwk3

vmpqdwk31#

你忘了用 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))
}

相关问题