scala - 如何使用Scala解压缩简明的(hadoop文件格式)文件

标签 scala hadoop compression snappy

previous问题开始,我已经将hadoop文件格式化为快照压缩文件,并且我想解压缩并将内容写入csv文件,就像snzip工具那样,snzip -d /Path/to/file.snappy。我发现snappy-java不支持解压缩这种格式。因此,我决定使用hadoop通用包中的org.apache.hadoop.io.compress.SnappyCodec。但我找不到任何执行此操作的示例。这是我尝试过的;

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

最佳答案

您忘记了使用setInput(请参阅documentation)。
类似于以下内容的东西应该起作用:

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

关于scala - 如何使用Scala解压缩简明的(hadoop文件格式)文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59629155/

相关文章:

scala - 在 Scala 中处理高种类对象时,类型信息会丢失

scala - UUID 路径可绑定(bind) - Play Framework

hadoop - Hbase- 即使删除列族后 Hadoop DFS 大小也没有减少

batch-file - 7zip最快的LZMA2压缩

json - Play Scala JSON 正文解析器默认值字段

java - hadoop和Java安装

java - 在 spark 提交中覆盖 spark 的库

java - 在 java 中使用 DeflaterOutputStream 和 InflaterInputStream 压缩和解压缩字符串

java - 有损压缩中的隐写术 (JAVA)

scala - 为什么在 Scala 中应该更喜欢 Option 进行错误处理而不是异常?