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

无法从AWS Athena下载可用格式CSV数据的问题咨询

问题原因

你下载的文件被file识别为data、无法正常打开,基本是以下三个原因导致的:

  • Athena控制台下载结果集时,只要结果大小超过10MB就会默认用GZIP压缩,但下载时不会自动追加.gz后缀,你拿到的本质是压缩包,不是纯文本CSV,文本编辑器和Excel自然无法识别。
  • 建表时SerDe配置错误,没有指定UTF-8编码和正确的CSV解析规则,控制台预览时前端做了格式兼容可以正常展示,但实际导出的文件格式不符合纯文本CSV规范。
  • 结果集较大时,控制台的「下载结果」按钮走的是前端分片拉取逻辑,很容易出现下载截断、文件不完整的问题。
解决步骤
  • 先排查压缩问题
    在本地对下载的文件执行校验命令:
    gzip -t my_table_name.csv
    如果命令没有返回报错,说明文件就是GZIP压缩包,直接执行解压命令即可得到正常的UTF-8 CSV:
    gzip -d my_table_name.csv
    解压后的文件可以直接用Excel、文本编辑器打开。

  • 如果校验提示不是gzip文件,修正表配置
    你之前建表时大概率漏了CSV对应的SerDe和编码配置,先删除旧表,用如下模板重新建表,注意替换成你自己的字段、S3路径:

CREATE EXTERNAL TABLE IF NOT EXISTS my_table_name (
  -- 按你的CSV表头逐行定义字段,比如user_id string, order_amount bigint这种
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
  'separatorChar' = ',',
  'quoteChar' = '"',
  'escapeChar' = '\\'
)
STORED AS TEXTFILE
LOCATION 's3://你的源CSV存放的S3路径/'
TBLPROPERTIES (
  'skip.header.line.count'='1', -- 自动跳过每个源文件的表头,避免合并后出现重复表头
  'serialization.encoding'='UTF-8'
);

建表完成后先执行select * from my_table_name limit 10验证结果,确认和源CSV内容一致。

  • 全量合并导出不要走控制台下载按钮
    7万份CSV合并后数据量不小,控制台下载很容易出问题,直接用CTAS语句把全量合并结果输出到指定S3路径:
CREATE TABLE merged_full_csv
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
  'separatorChar' = ',',
  'quoteChar' = '"',
  'escapeChar' = '\\'
)
STORED AS TEXTFILE
LOCATION 's3://你自己指定的结果输出S3路径/final_merged_csv/'
TBLPROPERTIES ('serialization.encoding'='UTF-8')
AS
SELECT * FROM my_table_name;

等查询执行完成后,直接到上面配置的结果S3路径下下载生成的文件即可,这些文件是标准UTF-8编码的纯文本CSV,不存在格式问题。如果结果过大Athena切分成了多个文件,本地合并时跳过除第一个文件外的其余文件的表头行就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:03:32