You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Athena GZIP JSON日期/小时分区投影无结果问题求助

Athena分区投影表无结果排查问题

背景

已配置Firehose将GZIP JSON文件投递至S3,路径模板为yyyy/MM/dd/HH/,示例文件路径:

s3://bucket-name/events/2022/11/08/16/file-2022-11-08-16-47-41-xxx.gz

无投影外部表正常查询

创建无投影的外部表:

CREATE EXTERNAL TABLE `noproj` (
  `ts` bigint,
  `url` string,
  `useragent` string
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://bucket-name/events/'
TBLPROPERTIES (
  'classification'='json',
  'compressionType'='gzip',
  'typeOfData'='file'
)

执行SELECT * FROM noproj可正常获取结果👍。

分区投影表无结果问题

创建分区投影表后,完全无法获取结果😭:

CREATE EXTERNAL TABLE `proj` (
  `ts` bigint,
  `url` string,
  `useragent` string
)
PARTITIONED BY (
  `date_created` string,
  `hour` string
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://bucket-name/events/'
TBLPROPERTIES (
  'classification'='json',
  'compressionType'='gzip',
  'typeOfData'='file',
  'projection.enabled' = 'true',
  'projection.date_created.type' = 'date',
  'projection.date_created.format' = 'yyyy/MM/dd',
  'projection.date_created.interval' = '1',
  'projection.date_created.interval.unit' = 'DAYS',
  'projection.date_created.range' = '2022/01/01, NOW',
  'projection.hour.type' = 'integer',
  'projection.hour.range' = '0,23',
  'projection.hour.digits' = '2',
  'storage.location.template'='s3://bucket-name/events/${date_created}/${hour}/'
)

尝试了以下查询均无结果:

  • SELECT * FROM proj
  • SELECT * FROM proj WHERE date_created = '2022/11/08'
  • SELECT * FROM proj WHERE date_created = '2022/11/08' AND hour = '16'
  • SELECT * FROM proj WHERE date_created >= date('2022-01-01')

最后一条查询报错:

SYNTAX_ERROR: line 1:41: '>=' cannot be applied to varchar, date

该报错与日期类型分区配置和字符串类型分区列的类型冲突有关。

尝试过多种常规排查方法但均未解决问题。


编辑1:简化投影配置仍无效

尝试更简单的分区投影配置,依旧无法获取结果:

CREATE EXTERNAL TABLE `year` (
  `ts` bigint,
  `url` string,
  `useragent` string
)
PARTITIONED BY (
  `year` string
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://bucket-name/events/'
TBLPROPERTIES (
  'classification'='json',
  'compressionType'='gzip',
  'projection.year.type' = 'integer',
  'projection.year.range' = '2022,2023',
  'projection.enabled' = 'true',
  'storage.location.template'='s3://bucket-name/events/${year}/'
)

编辑2:修改S3路径格式无效

尝试改用Hive风格的分区路径格式:

s3://bucket-name/events/year=2022/month=11/day=08/hour=16/file-2022-11-08-16-47-41-xxx.gz

问题依旧存在。


编辑3:切换Parquet格式无效

尝试将文件格式改为Parquet,出现完全相同的情况:无分区表可正常查询结果,分区投影表无结果。


内容的提问来源于stack exchange,提问作者Yves M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:05:12