presto - 带有冒号 (:) 的 Amazon Athena 分区不起作用
问题描述
解决方案
这是因为当您创建分区表时,分区是作为 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
或完全省略它。
推荐阅读
- javascript - 使用 Javascript 和 PHP 会话重新加载后,单选按钮保持选中状态
- dns - DNS 如何解析不正确的指定 TLD
- c# - 如何在 TimeSpan 和 DateTime 之间进行转换
- javascript - 按属性对具有键和子对象的对象进行排序
- mongodb - 演员的 mognodb 聚合组
- javascript - 动态依赖下拉 laravel
- python - 如何在python的嵌套字典中追加数据
- python - 查找异常值的函数
- javascript - 如何更改密码元素输入 JavaScript 的文本
- mongodb - 在 express (async/await) 中使用一个 mongoose 查询的输出作为另一个查询的输入