Athena UNLOAD导出Parquet时驼峰列名被转小写,求解决方案
解决Athena UNLOAD导出Parquet时列名被强制小写的问题
要解决UNLOAD导出Parquet时列名被转为小写的问题,需要同时调整两个关键点:
- 用双引号包裹驼峰别名:Athena(基于Presto)默认对标识符大小写不敏感,不加双引号的别名会被统一转为小写存储。必须用双引号明确指定大小写敏感的列名。
- 关闭Parquet legacy写入格式:默认的legacy格式会强制将列名转为小写,添加
parquet_write_legacy_format = false参数可以保留列名的原始大小写。
修改后的示例查询:
UNLOAD ( SELECT abc_de AS "abcDe", fgh_ij AS "fghIj" FROM tablename WHERE fgh_ij IN ( '123','456' ) AND year = 2024 AND month = 06 AND day = 24 ) TO 's3://dummy-bucketf2e78a99-gfm8/athena/data/test/' WITH ( format='PARQUET', compression='None', parquet_write_legacy_format = false )
补充说明
- 后续如果用Athena读取该Parquet文件创建表,同样需要用双引号定义列名(例如
CREATE TABLE ... ("abcDe" string, "fghIj" string)),否则Athena会将列名视为小写。 parquet_write_legacy_format参数是Presto提供的,Athena完全支持该配置,它主要用于控制是否兼容旧版Parquet工具的列名处理逻辑。
内容的提问来源于stack exchange,提问作者Xoxo
相关产品推荐
相关产品推荐

