在具有混合模式的分区上查询 Athena,给出 HIVE_CURSOR_ERROR:无法读取 Parquet 文件:

问题描述 投票:0回答:0

我们将 S3 数据存储用于一天内摄取的所有事件数据。每天的事件数据以 parquet 格式存储。出于分析目的,我们使用 AWS GLUE 和 Athena 来查询事件数据。每个事件都有特定的属性,这些属性将继续成为 AWS Athena 中的一个列

最近随着系统中摄取新事件,新列已添加到存储在 S3 中的文件中。我已经使用这些配置重新运行 GLUE 爬虫,以便为 S3 中的所有文件(按日期分区)提供单一模式。

我们面临的问题是查询数据中模式更改发生在其间的日期范围。例如,我们正在尝试这些查询。

SELECT * 
FROM 
    "data_lake"."events_version1_0" 
where 
    "event_dt"  >= CAST('2023-03-03' AS DATE) 
and "event_dt" <= CAST('2023-03-05' AS DATE) 

limit 20;

上面的查询运行良好,下面的查询也是如此 -

SELECT *
FROM 
    "data_lake"."events_version1_0"
WHERE
    event_dt >= CAST('2023-03-15' AS DATE)
AND
    event_dt <= CAST('2023-03-18' AS DATE)

但是我们在触发这个查询时遇到错误 -

SELECT *
FROM 
    "data_lake"."events_version1_0"
WHERE
    event_dt >= CAST('2023-03-03' AS DATE)
AND
    event_dt <= CAST('2023-03-06' AS DATE)

日期

2023-03-06
的 S3 文件具有新的事件数据,因此具有不同的架构(
2023-03-06
之前的 S3 文件具有不同的架构)。我们得到的错误是

HIVE_CURSOR_ERROR: Failed to read Parquet file: s3://data-lake/Events/Version1-0/2023-03-06/events/data.parquet
This query ran against the "data_lake" database, unless qualified by the query. Please post the error message on our forum  or contact customer support  with Query Id: 3c42f396-f1c4-4f38-b32e-48a3bf2405a8
amazon-web-services amazon-s3 aws-glue amazon-athena
© www.soinside.com 2019 - 2024. All rights reserved.