Amazon Athena 中 SQL 查询的注意事项和限制 - Amazon Athena
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Amazon Athena 中 SQL 查询的注意事项和限制

在 Athena 中运行查询时,请记住以下注意事项和限制:

  • 存储过程 – 不支持存储过程。

  • 最大分区数 – 在 CREATE TABLE AS SELECT (CTAS) 语句中可以创建的最大分区数为 100。有关信息,请参阅 CREATE TABLE AS。有关解决方法,请参阅使用 CTAS 和 INSERT INTO 创建带 100 多个分区的表

  • 不支持的语句 – 不支持以下语句:

    • 不支持 PREPARED 语句。您无法将 EXECUTEUSING 一起运行。

    • 不支持 CREATE TABLE LIKE

    • 不支持 DESCRIBE INPUTDESCRIBE OUTPUT

    • 不支持 EXPLAIN 语句。

  • Presto 联合连接器 – 不支持 Presto 联合连接器。使用 Amazon Athena Federated Query (Preview) 连接数据源。有关更多信息,请参阅使用 Amazon Athena Federated Query (Preview)

  • 查询具有复杂数据类型的 Parquet 列 – 当您查询具有复杂数据类型(arraystruct、Athena)的列并使用 Parquet 存储数据时,map 当前读取整行数据,而不是选择性地只读取指定的列。这是一个已知问题。

  • 对于具有多个分区的表超时 – 在查询具有数千个分区的表时,Athena 可能会超时。当表具有许多不属于类型 string 的分区时,可能会发生这种情况。使用类型 string 时,Athena 在元数据仓级别修剪分区。但是,当您使用其他数据类型时,Athena 会在服务器端修剪分区。您拥有的分区越多,此过程所花的时间越长,并且您的查询越可能超时。要解决此问题,请将您的分区类型设置为 string,以便 Athena 在元数据仓级别修剪分区。这可以减少开销并防止查询超时。

  • 跨区域查询 – 不支持跨区域查询。如果您在一个 AWS 区域中创建一个 Athena 表,并尝试查询另一个 AWS 区域中的 Amazon S3 存储桶中的数据,您可能会收到错误消息 InvalidToken: The provided token is malformed or otherwise invalid (InvalidToken:提供的令牌格式不正确或无效)

  • Amazon S3 GLACIER 存储 – 将数据移到或转换为 Amazon S3 GLACIER 存储类别后,数据将不再可供 Athena 读取或查询。即使还原了存储类别对象也是如此。要使 Athena 可以读取您希望查询的已还原对象,请将还原的对象复制回 Amazon S3 以更改其存储类别。

  • Amazon S3 访问点 – 您无法在 LOCATION 子句中使用 Amazon S3 访问点。但是,对于并非通过 Amazon S3 访问点提供的对象,只要 Amazon S3 存储桶策略没有明确拒绝对其的请求,则对于具有合适访问权限的请求者,对象应可从 Athena 访问。

  • 将文件视为隐藏 – Athena 将以下划线 (_) 或句点 (.) 开头的源文件视为隐藏文件。要解决此限制,请重命名文件。