如何解决无效的 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 举报,一经查实,本站将立刻删除。