在 Athena 中重複使用查詢結果 - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Athena 中重複使用查詢結果

當您在 Athena 中重新執行查詢時,您可以選擇性地選擇重複使用最近儲存的查詢結果。此選項可以提高效能並降低已掃描的位元組數的成本。例如,如果您知道結果在指定時間範圍內不會變更,則重複使用查詢結果就很有用。您可以指定重複使用查詢結果的最長期限。只要 Athena 的結果不超過您指定的期限,就會使用儲存的結果。如需詳細資訊,請參閱 AWS 大數據部落格中的使用 Amazon Athena 降低成本和提升查詢效能

主要功能

當您啟用查詢的結果重複使用時,Athena 會在相同的工作群組中尋找先前執行的查詢。如果 Athena 找到相符項目,它會略過執行,並傳回先前相符執行項目的查詢結果。您可以針對每次查詢啟用查詢結果重複使用。

當下列所有條件都成立時,Athena 會重複使用最後一個查詢結果:

  • 查詢字串符合由 Athena 決定。

  • 資料庫和目錄名稱相符。

  • 先前的結果尚未過期。

  • 查詢結果組態符合先前執行的查詢結果組態。

  • 您可以存取查詢中參考的所有資料表。

  • 您可以存取儲存先前結果的 S3 檔案位置。

如果不符合上述任何條件,則 Athena 會在不使用快取結果的情況下執行查詢。

考量和限制

使用查詢結果重複使用功能時,請謹記以下幾點:

  • Athena 只會在相同的工作群組中重複使用查詢結果。

  • 重複使用查詢結果功能遵循工作群組組態。如果您覆寫查詢的結果組態,則會停用該功能。

  • 僅支援在 Amazon S3 上產生結果集的查詢。EXECUTE 不支援 SELECT和 以外的陳述式。

  • AWS Glue支援向 註冊的 Apache Hive、Apache Hudi、Apache Iceberg 和 Linux Foundation Delta Lake 資料表。不支援外部 Hive 中繼存放區。

  • 不支援參考聯合目錄或外部 Hive 中繼存放區的查詢。

  • Lake Formation 受管理的資料表不支援查詢結果重複使用。

  • 當資料表來源的 Amazon S3 位置註冊為 Lake Formation 中的資料位置時,不支援查詢結果重複使用。

  • 不支援具有資料列和資料欄許可的資料表。

  • 不支援具有精細的存取控制 (例如資料欄或資料列篩選) 的資料表。

  • 任何參考不支援資料表的查詢都不符合查詢結果重複使用的資格。

  • Athena 要求您擁有 Amazon S3 讀取許可,如此才能重複使用之前產生的輸出檔案。

  • 重複使用查詢結果功能會假設先前結果的內容尚未修改。Athena 在使用之前不會檢查先前結果的完整性。

  • 如果先前執行的查詢結果已刪除或移至 Amazon S3 中的其他位置,後續執行相同查詢將不會重複使用查詢結果。

  • 可能會傳回過時結果。在達到您指定的重複使用最長期限之前,Athena 不會檢查來源資料是否有變更。

  • 如果有多個結果可供重複使用,則 Athena 會使用最新的結果。

  • 使用類似 rand()shuffle() 的非確定性運算子或函數的查詢,並未使用快取結果。例如,不含 ORDER BYLIMIT 是非確定性的,且並非快取,但含有 ORDER BYLIMIT 是確定性的其已快取。

  • 若要搭配 JDBC 使用查詢結果重複使用功能,所需的最低驅動程式版本為 2.0.34.1000。對於 ODBC,所需的最低驅動程式版本為 1.1.19.1002。如需驅動程序下載資訊,請參閱 使用 ODBC 和 JDBC 驅動器連接至 Amazon Athena

  • 使用多個資料目錄的查詢不支援查詢結果重複使用。

  • 包含超過 20 個資料表的查詢不支援查詢結果重複使用。

  • 對於大小小於 100 KB 的查詢字串,會忽略註解和空格的差異,INNER JOINJOIN視為對等字串以重複使用結果。大於 100 KB 的查詢字串必須完全相符,才能重複使用結果。

  • 如果查詢結果超過指定的最長存留期,則視為過期;如果未指定最長存留期,則視為超過預設值 60 分鐘。您可以以分鐘、小時或天數來指定重複使用查詢結果的最長期限。無論使用的時間單位為何,可指定的最長期限相等於 7 天。

  • 不支援受管查詢結果

如何在 Athena 主控台中重複使用查詢結果

若要使用此功能,請在 Athena 查詢編輯器中啟用 Reuse query results (重複使用查詢結果)。

在 Athena 查詢編輯器中,啟用 Reuse query results (重複使用查詢結果)。
若要設定重複使用查詢結果功能
  1. 在 Athena 查詢編輯器的 Reuse query results (重複使用查詢結果) 選項下,選擇 up to 60 minutes ago (最多 60 分鐘前) 旁邊的編輯圖示。

  2. Edit reuse time (編輯重複使用時間) 對話方塊中,從右側的方塊中選擇時間單位 (分鐘、小時或天)。

  3. 在左側的方塊中,輸入或選擇您要指定的時間單位數目。無論選擇的時間單位為何,您可以輸入的最長時間相當於七天。

    設定重複使用查詢結果的最長期限。
  4. 選擇確認

    橫幅會確認您的組態變更,而 Reuse query results (重新使用查詢結果) 選項會顯示您的新設定。