為什麼選擇 Athena?
Amazon Athena 是建立在開放原始碼架構上的無伺服器互動式分析服務,可讓您在其原位分析數 PB 的資料。藉助 Athena,您可以使用 SQL 或 Apache Spark,而且不需要設定或管理任何基礎設施。定價很簡單:您可以依據處理的資料或使用的運算付費。
首先,您建立一個工作群組,您可以指定查詢引擎、您在 Amazon Simple Storage Service (S3) 中保存執行結果的工作目錄、AWS Identity and Access Management (IAM) 角色 (如果需要),以及資源標籤。您可以使用工作群組來分隔使用者、團隊、應用程式或工作負載;對每個查詢或整個工作群組可處理的資料量設定限制;以及追蹤成本。根據您建立的工作群組,您可以 (a) 執行 SQL 查詢並按掃描的資料或使用的運算付費,或 (b) 執行 Apache Spark Python 程式碼並依執行的程式碼按小時費率計費。
AWS 定價計算器
一次估算即可計算您的 Amazon Athena 和架構成本。
SQL 查詢
帶佈建容量的 SQL 查詢
Apache Spark
其他費用
Athena 可從 Amazon S3 直接查詢資料。使用 Athena 查詢資料不需另付儲存費用。您只需針對儲存、請求和資料傳輸支付標準 S3 費率。根據預設,查詢結果會存放在您選擇的 S3 儲存貯體中,而且依標準 S3 費率計費。
- 當您的工作負載讀取、存放和傳輸資料時,由 S3 向您收費。 這包括成功和失敗的查詢。依據預設,SQL 查詢結果和 Spark 計算結果會存放在您選擇的 S3 儲存貯體中,並以標準 S3 費率計費。如需詳細資訊,請參閱 Amazon S3 定價。
- 如果您使用 AWS Glue Data Catalog 搭配 Athena,則會依標準 Data Catalog 費率計費。如需詳細資訊,請瀏覽 AWS Glue 定價頁面。
- 除非使用佈建容量,否則聯合資料來源 (未存放在 S3 上的資料) 上的 SQL 查詢是由 Athena 掃描的每 TB 計費,並進位到最接近的 MB (每個查詢最少 10MB)。此類查詢還會在您的帳戶中叫用 AWS Lambda 函數,並向您收取標準價格的 Lambda 使用費用。聯合查詢叫用的 Lambda 函數受 Lambda 免費方案約束。如需詳細資訊,請瀏覽 Lambda 定價頁面。
定價範例
範例 1 – SQL 查詢
假設有一個表格包含 4 個相同大小的欄,以未壓縮文字檔的形式存放在 Amazon S3 上,大小總計為 3 TB。若要執行查詢以取得表格單一欄的資料,Amazon Athena 需要掃描整個檔案,因為文字格式無法分割。
- 這個查詢的費用是 15 USD。(掃描 3 TB 的價格是 3 * 5 USD/TB = 15 USD。)
如果使用 GZIP 壓縮檔案,則會看到 3:1 的壓縮比率。在這個情況下,您會有一個大小為 1 TB 的壓縮檔案。在這個檔案上執行相同查詢的費用是 5 USD。Athena 必須再重新掃描整個檔案,但是由於它的大小是原來的三分之一,因此您只需要支付之前費用的三分之一。如果您不只壓縮檔案還將檔案轉換成單欄格式 (如 Apache Parquet) 以獲得 3:1 的壓縮比率,則 S3 上仍然是 1 TB 大小的資料。然而,在這個情況中,由於 Parquet 是單欄式,因此 Athena 只需讀取與所執行查詢相關的欄。 由於進行的查詢只會參考單一欄,因此 Athena 只會讀取該欄,並避開讀取檔案中四分之三的部分。由於 Athena 只讀取四分之三的檔案,因此只會從 S3 掃描 0.25 TB 的資料。
- 這個查詢的費用是 1.25 USD。由於壓縮的關係節省了 3 倍的成本,再加上只讀取一欄,因此又節省了 4 倍的成本。
(檔案大小 = 3 TB/3 = 1 TB。讀取單一欄時掃描的資料 = 1 TB/4 = 0.25 TB。0.25 TB 的價格 = 0.25 * 5 USD/TB = 1.25 USD)
範例 2 – 帶佈建容量的 SQL 查詢
假設您的團隊支援為在上班時間內提交查詢的使用者提供自助式分析的 Web 應用程式,並希望查詢在可預測的時間內完成。上週,應用程式使用者共提交了 10,000 個查詢,這些查詢掃描了 500TB 的資料。您想要使用佈建容量,協助您隨著使用者數量的增加維持一致的使用者體驗。透過查詢的分析,您可以判斷 96 DPU 足以滿足目前的工作負載。
- 在一個工作日內,使用佈建容量支援此工作負載的成本計算方式為 96 個 DPU * 每 DPU 小時 0.30 USD * 每天 12 小時 = 345.60 USD。
一天早晨,您了解到一組新的應用程式使用者已完成布設,因此預期查詢量會比前一天高出 2 倍。您想要確保使用者的效能與昨天相似,但並未預期所有使用者都同時提交查詢。當天的兩小時後,您將容量增加 50% 至 144 個 DPU。
- 當天工作負載的成本等於 2 小時 96 個 DPU 的成本,加上 10 小時 144 個 DPU 的成本,或 96 個 DPU * 每 DPU 小時 0.30 USD * 2 小時 +144 個 DPU * 每 DPU 小時 0.30 USD * 10 小時 = 489.60 USD。
範例 3 – Apache Spark 應用程式
考慮在 Athena 主控台中使用筆記本,提取上一季度的銷售資料並繪製圖表以建立報告。使用筆記本開始工作階段。您的工作階段持續 1 小時,並提交 6 次計算作為工作階段的一部分。每次計算需要 20 個 1-DPU 工作節點來執行並持續 1 分鐘。
- 工作者 DPU-小時 = 計算次數 * 每次計算使用的 DPU * 計算的執行時間 = 6 次計算 * 每次計算 20 DPU * 每次計算 (1/60) 小時 = 2.0 DPU-小時
- 驅動程式 DPU-小時 = 每個工作階段使用的 DPU * 工作階段時間 = 每個工作階段 1 個 DPU * 每個工作階段 1 小時 = 1.0 DPU-小時
- 總 DPU-小時 = 工作者 DPU-小時 + 驅動程式 DPU-小時 = 2.0 DPU-小時 + 1.0 DPU-小時 = 3.0 DPU-小時
- Spark 應用程式費用 = 每 DPU-小時0.35 USD * 3.0 DPU-小時 = 1.05 USD
注意:S3 會單獨向您收取儲存和讀取資料及執行結果的費用。