在Amazon Athena加载S3 CSV文件时列值全部归入首列的问题排查
问题原因与解决方案
问题出在未指定CSV文件的字段分隔符。你使用的LazySimpleSerDe默认采用**制表符(\t)**作为字段分隔符,但你的数据文件是用逗号(,)分隔的,导致Athena无法正确识别列边界,把整行内容都塞进了第一列。
修改后的建表语句
在ROW FORMAT SERDE部分添加WITH SERDEPROPERTIES显式指定逗号作为分隔符:
CREATE EXTERNAL TABLE `testing`( `id` string, `user_id` string, `personal_id` string, `created_at` string, `updated_at` string, `active` string) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' WITH SERDEPROPERTIES ( 'field.delim' = ',' ) STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://testing2fa/' TBLPROPERTIES ( 'transient_lastDdlTime'='1665356861')
额外提示
- 如果你的CSV文件存在带引号的字段(比如字段值包含逗号),更推荐使用
OpenCSVSerDe适配标准CSV格式:
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerDe'
- 修改表结构后,可执行
MSCK REPAIR TABLE testing;刷新元数据,再重新查询验证结果。
内容的提问来源于stack exchange,提问作者DSi
相关产品推荐
相关产品推荐

