AWS Athena无法使用snappy压缩读取镶木地板文件

时间:2018-04-18 22:05:48

标签: node.js lambda compression amazon-athena snappy

我在nodejs中创建了一个AWS lambda,所以我正在使用一个库将json转换为镶木地板文件。

这个库没有自己的压缩方法,所以创建我的镶木地板文件后,我正在尝试用google snappy库压缩它:

next => {
      snappy.compress(fs.readFileSync(parquetFile.name), (err, compressed) => {
        next(err, compressed)
      })
    },
    (compressed, next) => {
      const parquetS3File = new S3File(config.parquet.bucket, Tools.createPutKey(config.parquet.prefix, s3ObjectKey))
      parquetS3File.body = compressed
      parquetS3File.upload(err => {
        parquetFile.removeCallback()
        next(err)
      })
    }

但是,当我尝试在雅典娜做一些查询时,我有下一个错误

HIVE_CANNOT_OPEN_SPLIT: Error opening Hive split s3://bucket-example/data/parquet_node/year=2018/month=04/day=18/hour=18/minute=47/file.snappy.parquet (offset=0, length=11716266): can not read class parquet.format.FileMetaData: don't know what type: 15

This query ran against the "test" database, unless qualified by the query. Please post the error message on our forum or contact customer support with Query Id: 3b3a2df1-b202.

另一方面,当我不压缩数据时,Athena可以读取文件。

类似的东西:

next => {
          const parquetS3File = new S3File(config.parquet.bucket, Tools.createPutKey(config.parquet.prefix, s3ObjectKey))
          parquetS3File.body = fs.readFileSync(parquetFile.name)
          parquetS3File.upload(err => {
            parquetFile.removeCallback()
            next(err)
          })
        }

所以,问题是:有没有办法在创建一个镶木地板文件(用snappy)后压缩它?

谢谢!

0 个答案:

没有答案