![](/img/trans.png)
[英]Amazon Athena LEFT OUTER JOIN query not working as expected
[英]Amazon Athena partition with colon(:) is not working
在 Athena 中创建分区时,我尝试使用 (yyyy-MM-ddTHH:mm:ssZ) 格式的日期,然后我无法查询数据
第一步:创建表
CREATE EXTERNAL TABLE my_info (
id STRING,
name STRING
) PARTITIONED BY (
part string
) STORED AS ORC LOCATION 's3://bucket1/data' tblproperties ("orc.compress"="SNAPPY");
第 2 步:创建如下文件夹并添加文件。
S3://bucket1/data/part=2019-11-12T14:15:16Z
第三步:刷新分区 MSCK REPAIR TABLE my_info
第四步:查询数据 SELECT * FROM my_info
有了这个我无法查询任何数据
如果我将文件夹更改为格式 (yyyy-MM-ddTHH)
在第 2 步中没有“:”
s3://bucket1/data/part=2019-11-12T14
然后我就能得到结果。
关于为什么这不起作用的任何想法。
这是因为当您创建分区表时,分区是作为 S3 路径的一部分实现的,例如对于s3://bucket1/data/part=2019-11-12T14:15:16Z
part=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
或完全省略它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.