通过AWS Athena合并S3 CSV为GZIP文件时分隔符缺失问题咨询
问题根因
你遇到的分隔符缺失问题,是因为Athena的TEXTFILE格式默认字段分隔符为不可见的\x01(SOH字符),没有主动指定逗号分隔的话,输出内容就会看起来是字段直接拼接的状态。
解决方法
方案1:继续使用TEXTFILE格式,主动指定分隔符和压缩配置
在WITH参数里新增field_delimiter指定逗号为分隔符,同时新增compression_level开启GZIP压缩,修正后的CTAS语句如下:
CREATE TABLE NODES_GZIPPED_NODESTEST2 WITH ( external_location = 's3://mybucket', format = 'TEXTFILE', field_delimiter = ',', compression_level = 'GZIP', bucketed_by=ARRAY['accessedtime'], bucket_count = 20 ) AS SELECT * FROM NodeRun2CSV3 LIMIT 50000
方案2:直接使用CSV格式(更推荐)
Athena原生支持CSV格式输出,默认就是逗号分隔,不需要额外指定分隔符,配置更简洁:
CREATE TABLE NODES_GZIPPED_NODESTEST2 WITH ( external_location = 's3://mybucket', format = 'CSV', compression_level = 'GZIP', bucketed_by=ARRAY['accessedtime'], bucket_count = 20 ) AS SELECT * FROM NodeRun2CSV3 LIMIT 50000
补充说明
- 如果需要输出的CSV文件带表头,可以在WITH参数里额外加
write_headers = true - bucket_count设为20的情况下,最终会输出20个GZIP压缩的CSV文件,符合你合并小文件的需求
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

