在Ruby中读取GZip压缩的AVRO文件

时间:2013-11-15 13:38:06

标签: ruby gzip avro

我有一堆AVRO文件,我使用GZip在外部压缩。 我试图在没有解压缩它们的情况下在Ruby中读取它们,但是无法使它工作。

1 个答案:

答案 0 :(得分:1)

解决了它:

require 'avro'

def open_avro(file)
  if file =~ /avro$/
    Avro::DataFile.open(file)
  elsif file =~ /avro\.gz$/
    begin
      $/ = ""
      file = Zlib::GzipReader.open(file)
      reader = Avro::IO::DatumReader.new(file, nil)
      file.rewind # we need to rewind because DatumReader seeked thefile
      avro   = Avro::DataFile::Reader.new(StringIO.new(file.gets), reader)
    end
    return avro
  end
end