Amazon Athena建表报mismatched input 'STORED'错误求助
错误原因
- 原教程的示例代码存在基础语法疏漏:占位符
<table name未替换为实际表名,且缺少字段定义的左括号;同时缺少Athena创建外部表必填的LOCATION参数,该参数用于指定数据存储的S3路径。 - 自行调整的语法混淆了Athena的不同建表规则:普通文本类型外部表的
ROW FORMAT配置不需要放在WITH块中,且STORED关键字后缺少必须的AS关键字,因此触发了预期为<EOF>的语法报错。
正确建表写法
CREATE EXTERNAL TABLE <替换为实际表名> ( "objectid" int, "nh_code" int, "nh_name" string, "shapearea" double, "shapelen" double, "bb_west" double, "bb_south" double, "bb_east" double, "bb_north" double, "shape" string, "cog_longitude" double, "cog_latitude" double ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://<替换为你的S3桶名/数据存放路径>/';
注意事项
- 代码中所有
<>包裹的内容都需要替换为你实际的业务参数,S3路径末尾需要保留斜杠 - 如果你的源TXT文件包含表头行,可以在
LOCATION参数后添加如下配置跳过表头,避免数据类型报错:
TBLPROPERTIES ('skip.header.line.count'='1')
内容的提问来源于stack exchange,提问作者kencheung7373
相关产品推荐
相关产品推荐

