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

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

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

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

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

  • 不支持的语句 – 不支持的语句包括以下项:有关 Athena 中不支持的 DDL 语句的完整列表,请参阅 不支持的 DDL

    • 不支持 CREATE TABLE LIKE

    • 不支持 DESCRIBE INPUTDESCRIBE OUTPUT

    • MERGE 语句仅支持事务表格式。有关更多信息,请参阅 MERGE INTO

    • 不支持 UPDATE 语句。

    • 不支持 DELETE FROM

  • Trino 和 Presto 连接器 – 不支持 TrinoPresto 连接器。使用 Amazon Athena 联合查询连接数据来源。有关更多信息,请参阅 使用 Amazon Athena 联合查询

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

  • S3 Glacier 支持 - 有关查询已还原 Amazon S3 Glacier 对象的信息,请参阅 查询还原的 Amazon S3 Glacier 对象

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

  • 行或列大小限制 – 单行或其列的大小不能超过 200 兆字节。例如,当 CSV 或 JSON 文件中的行包含 300 兆字节的单列时,可能会超出此限制。超过此限制也会产生错误消息 TextLineLengthLimitExceededException: Too many bytes before newline。要解决此限制,请确保任何一行中列的数据总和小于 200 MB。

  • LIMIT 子句最大值 – 可以为 LIMIT 子句指定的最大行数为

    9223372036854775807。使用 ORDER BY 时,LIMIT 子句支持的最大行数为 2147483647。超过此限制会导致错误消息 NOT_SUPPORTED: ORDER BY LIMIT > 2147483647 is not supported(不支持:不支持大于 2147483647 限制的指令)。

  • information_schema – 如果您的 AWS Glue 元数据较少或中等,则查询 information_schema 的性能会最佳。如果您有大量的元数据,则可能会出现错误。有关查询 information_schema 数据库的 AWS Glue 元数据的信息,请参阅查询 AWS Glue Data Catalog

  • 数组初始化 – 由于 Java 中的限制,无法在 Athena 中初始化具有超过 254 个参数的数组。

  • 隐藏的元数据列 - 视图不支持 Hive 或 Iceberg 隐藏的元数据列 $bucket$file_modified_time$file_size$partition。有关在 Athena 中使用 $path 元数据列的信息,请参阅 获取 Amazon S3 中源数据的文件位置

有关最大查询字符串长度、查询超时限额以及活动 DML 查询数限额的信息,请参阅 服务限额