首页 > 解决方案 > 带有冒号 (:) 的 Amazon Athena 分区不起作用

问题描述

标签: prestoamazon-athena

解决方案


这是因为当您创建分区表时,分区是作为 S3 路径的一部分实现的,例如,s3://bucket1/data/part=2019-11-12T14:15:16Zpart=2019-11-12T14:15:16Z部分是 Athena 在查询数据时将其解释为分区的 S3 路径。

S3 路径名对可以使用的字符有一些限制:

键名中的以下字符可能需要额外的代码处理,并且可能需要进行 URL 编码或作为 HEX 引用。其中一些是不可打印的字符,您的浏览器可能无法处理它们,这也需要特殊处理:

Ampersand ("&")  
Dollar ("$")  
ASCII character ranges 00–1F hex (0–31 decimal) and 7F (127 decimal)  
'At' symbol ("@")  
Equals ("=")  
Semicolon (";")  
Colon (":")  
Plus ("+")  
Space – Significant sequences of spaces may be lost in some uses (especially multiple spaces)  
Comma (",")  
Question mark ("?")  

在这种情况下,Presto/Athena 可能没有解释路径中的冒号。要解决此问题,您可以在时间戳中使用替代分隔字符,例如part=2019-11-12--14-15-16或完全省略它。


推荐阅读