在 Amazon Athena 中進行 SQL 查詢的考量事項與限制 - Amazon Athena

在 Amazon Athena 中進行 SQL 查詢的考量事項與限制

在 Athena 中執行查詢時,請記住下列考量事項與限制:

  • 預存程序 – 不支援預存程序。

  • 分割區數量上限 – 您可以使用 CREATE TABLE AS SELECT (CTAS) 陳述式建立的分割區數量上限為 100。如需詳細資訊,請參閱 CREATE TABLE AS。如需因應措施,請參閱使用 CTAS 和 INSERT INTO 來建立具有超過 100 個分割區的資料表

  • 不支援的陳述式 – 不支援下列陳述式:

    • 不支援 CREATE TABLE LIKE

    • 不支援 DESCRIBE INPUTDESCRIBE OUTPUT

    • 不支援 MERGE 陳述式。

    • 不支援 UPDATE 陳述式。

  • Trino 和 Presto 連接器 – 不支援 TrinoPresto 連接器。使用 Amazon Athena 聯合查詢來連接資料來源。如需詳細資訊,請參閱 使用 Amazon Athena 聯合查詢

  • 具有多個分割區的資料表逾時 – 在查詢具有數千個分割區的資料表時,Athena 可能會逾時。當資料表有許多非類型 string 的分割區時,就會發生這種情況。當您使用類型 string 時,Athena 會在中繼存放區層級剔除分割區。不過,在您使用其他資料類型時,Athena 會剔除伺服器端的分割區。您擁有的分割區越多,此程序所需的時間越長,您的查詢也越有可能逾時。如要解決此問題,請將您的分割區類型設定為 string,以便 Athena 在中繼存放區層級剔除分割區。這可以減少額外負荷,並防止查詢逾時。

  • Amazon S3 Glacier 儲存 – Athena 不支援查詢 S3 Glacier Flexible Retrieval 或 S3 Glacier Deep Archive 儲存類別中的資料,也不支援查詢 S3 Intelligent Tiering 儲存類別的 Archive Access 或 Deep Archive Access 層。在 S3 Glacier Flexible Retrieval 或 S3 Glacier Deep Archive 儲存類別中忽略的物件。

    即使還原儲存類別物件之後,Athena 也無法再讀取或查詢經移動或轉換至其中一個類別的資料。若要讓 Athena 能夠讀取您要查詢的已還原物件,請將還原的物件複製回 Amazon S3 以變更其儲存類別。或者,您也可以使用 Amazon S3 Glacier Instant Retrieval 儲存類別,Athena 可查詢該儲存類別。如需詳細資訊,請參閱 Amazon S3 Glacier Instant Retrieval 儲存類別

  • 檔案視為隱藏 – Athena 會將以底線 (_) 或點 (.) 開頭的來源檔案視為隱藏。如果要解決這個限制,請將檔案重新命名。

  • 資料行或資料欄大小限制 – 單一資料行或其資料欄的大小不可超過 32 MB。例如,當 CSV 或 JSON 檔案中的資料行包含 100 MB 的單一資料欄時,則會超過此限制。超過此限制時也會產生錯誤訊息 Line too long in text file (文字檔案中的資料行過長)。若要解決此限制,請確定任何資料行中資料欄的資料總和小於 32MB。

  • LIMIT 子句上限 – 可指定給 LIMIT 子句的資料列數上限為 2147483647。超過此限制會導致顯示錯誤訊息 NOT_SUPPORTED: ORDER BY LIMIT > 2147483647 is not supported (NOT_SUPPORTED:不支援 ORDER BY LIMIT > 2147483647)。

  • information_schema – 如果您擁有小到中等數量的 AWS Glue 中繼資料,則查詢 information_schema 具有最高效能。如果您有大量中繼資料,則可能會出現錯誤。如需有關查詢 information_schema 資料庫的 AWS Glue 中繼資料,請參閱查詢 AWS Glue Data Catalog

  • 陣列初始化 – 由於 Java 中的限制,無法在 Athena 中初始化具有超過 254 個引數的陣列。

如需查詢字串長度上限、查詢逾時配額,以及作用中 DML 查詢數量配額的相關資訊,請參閱Service Quotas