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

Athena创建S3分区表报错:mismatched input 'PARTITIONED'

Athena建表报错:mismatched input 'PARTITIONED' 解决方案

错误原因

报错的核心问题是建表语句中数组类型的写法不符合SQL语法规范:你使用了HTML转义字符&lt;代替了SQL中要求的<,导致Athena的SQL解析器无法正确完成列定义的解析,进而将后续的PARTITIONED BY子句判定为非法输入,触发语法错误。

错误位置定位

语句中raw_all_locations和raw_categories列的类型被错误写为array&lt;string&gt;,这是HTML环境下的转义写法,在Athena SQL中必须改为array<string>。

修正后的完整建表语句

CREATE TABLE IF NOT EXISTS boards_raw_fields_v1 (
  "uuid" bigint,
  "source" string,
  "raw_company_name" string,
  "raw_contract_type" string,
  "raw_employment_type" string,
  "raw_working_hours_type" string,  
  "raw_all_locations" array<string>, 
  "raw_categories" array<string>, 
  "raw_industry" string)
PARTITIONED BY ( 
  "year" string, 
  "month" string, 
  "day" string, 
  "hour" string, 
  "version" bigint)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
  's3://my-data/datalake-raw/boards/raw-fields/v1'
TBLPROPERTIES (
  'classification'='parquet', 
  'compressionType'='snappy', 
  'projection.enabled'='false', 
  'typeOfData'='file')

额外说明

  • S3路径中最后一个文件夹v1无需提前创建,Athena会在首次写入数据时自动生成。
  • 若后续需要加载S3中已有的分区数据,需执行MSCK REPAIR TABLE boards_raw_fields_v1;让Athena识别分区。

内容的提问来源于stack exchange,提问作者The Dan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 12:54:21