微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无效的 Parquet 文件:AWS Glue 目录表不适用于 Snappy 文件

如何解决无效的 Parquet 文件:AWS Glue 目录表不适用于 Snappy 文件

使用与 terraform 示例中使用的配置相同的配置:https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/glue_catalog_table

resource "aws_glue_catalog_table" "aws_glue_catalog_table" {
  name          = "MyCatalogTable"
  database_name = "MyCatalogDatabase"

  table_type = "EXTERNAL_TABLE"

  parameters = {
    EXTERNAL              = "TRUE"
    "parquet.compression" = "SNAPPY"
  }

  storage_descriptor {
    location      = "s3://my-bucket/event-streams/my-stream"
    input_format  = "org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat"
    output_format = "org.apache.hadoop.hive.ql.io.parquet.MapredParquetoutputFormat"

    ser_de_info {
      name                  = "my-stream"
      serialization_library = "org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe"

      parameters = {
        "serialization.format" = 1
      }
    }

  }
}

然后尝试在创建的表上运行简单的 Athena 查询失败并显示错误

无效的 Parquet 文件

我使用了所有可用的 SerDe 定义:https://docs.aws.amazon.com/athena/latest/ug/supported-serdes.html 以及我能找到的所有 input_formats,但没有任何效果

尝试使用 Parquet 文件而不是 Snappy 文件似乎确实有效,但这不符合我的需要。有人用过 Snappy 文件吗?

解决方法

您需要设置 compressed flag,因为 Parquet 文件是用 Snappy 压缩的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。