如何从雅典娜读取 json.snappy 文件

how to read json.snappy file from athena

我在 s3 存储桶中有输入文件,使用 .json.snappy 压缩,我正在尝试通读 athena table。我尝试使用不同的 serde 'org.apache.hive.hcatalog.data.JsonSerDe' & 'org.openx.data.jsonserde.JsonSerDe' 但它没有用,Athena table 在查询时显示零记录。

我还尝试查看来自 s3 select 的示例数据,但没有成功。有没有办法读取这些数据。

经过几个小时的调试后,我发现输入文件是用原始的 snappy 格式压缩的,然后用 base64 编码的。因此,Athena 无法读取此文件。因此,作为一种变通解决方案,我使用 python-snappy 库解码和解压缩文件并上传到 s3 存储桶。

import snappy
import base64
import os
snappy_file = 'input.json.snappy'
with open (snappy_file, "r") as input_file:
    data = input_file.read()
    # decoding base64 data
    data = base64.b64decode(data)
    # uncompress raw-snappy 
    uncompressed = snappy.uncompress(data)
    print(uncompressed.decode('utf-8'))